この記事では、Pythonを使ってガントチャートを作成する方法について解説します。ガントチャートはプロジェクト管理やスケジュール管理に非常に便利なツールです。
コードの概要
以下のコードは、サンプルデータを使用してガントチャートを作成する方法を示しています。
python
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates
# サンプルデータの作成
data = {
'Task': ['Task 1', 'Task 2', 'Task 3'],
'Start': ['2023-10-01 08:00:00', '2023-10-01 09:00:00', '2023-10-01 10:00:00'],
'End': ['2023-10-01 12:00:00', '2023-10-01 17:00:00', '2023-10-01 15:00:00']
}
# データフレームの作成
df = pd.DataFrame(data)
df['Start'] = pd.to_datetime(df['Start'])
df['End'] = pd.to_datetime(df['End'])
# プロットの設定
fig, ax = plt.subplots(figsize=(10, 5))
# ガントチャートの作成
for i, task in enumerate(df['Task']):
start = df['Start'][i]
end = df['End'][i]
ax.barh(task, (end - start).total_seconds() / 24 / 3600, left=start, color='skyblue')
# 軸のフォーマット設定
ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M'))
plt.xticks(rotation=45)
plt.xlabel('Date and Time')
plt.ylabel('Task')
plt.title('Gantt Chart with Time')
# グリッドの追加
plt.grid(True)
# プロットの表示
plt.tight_layout()
plt.show()
詳細な解説
サンプルデータの作成
まず、ガントチャートに表示するタスクのサンプルデータを作成します。
python
data = {
'Task': ['Task 1', 'Task 2', 'Task 3'],
'Start': ['2023-10-01 08:00:00', '2023-10-01 09:00:00', '2023-10-01 10:00:00'],
'End': ['2023-10-01 12:00:00', '2023-10-01 17:00:00', '2023-10-01 15:00:00']
}
データフレームの作成
次に、Pandasを使ってデータフレームを作成し、開始時間と終了時間を日時型に変換します。
python
df = pd.DataFrame(data)
df['Start'] = pd.to_datetime(df['Start'])
df['End'] = pd.to_datetime(df['End'])
プロットの設定
プロットの設定を行い、図と軸を作成します。
python
fig, ax = plt.subplots(figsize=(10, 5))
ガントチャートの作成
各タスクの開始時間と終了時間を使って、ガントチャートを作成します。
python
for i, task in enumerate(df['Task']):
start = df['Start'][i]
end = df['End'][i]
ax.barh(task, (end - start).total_seconds() / 24 / 3600, left=start, color='skyblue')
軸のフォーマット設定
軸のフォーマットを設定し、時間の表示を見やすくします。
python
ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M'))
plt.xticks(rotation=45)
plt.xlabel('Date and Time')
plt.ylabel('Task')
plt.title('Gantt Chart with Time')
グリッドの追加
グリッドを追加して、チャートを見やすくします。
python
plt.grid(True)
プロットの表示
最後に、プロットを表示します。
python
plt.tight_layout()
plt.show()
まとめ
このコードは、Pythonを使ってガントチャートを作成する方法を示しています。プロジェクト管理やスケジュール管理に非常に便利なツールとなるでしょう。ぜひ試してみてください。