Python
 Computer >> コンピューター >  >> プログラミング >> Python

matplotlibでガントチャート(ガントプロット)を作成する方法

ガントチャートは、プロジェクト計画においてスケジュールを視覚的に管理するために広く活用されている図表です。縦軸にタスク(作業項目)、横軸に時間軸を配置した棒グラフの一種であり、横棒の長さ(幅)がそれぞれの作業にかかる期間を表します。これにより、どのタスクがいつ開始され、いつ終了するのかをひと目で把握できます。

matplotlibでガントチャートを描画するには、broken_barh() メソッドを使用します。このメソッドは、複数の水平方向の矩形(バー)をまとめて描画できるため、タスクごとの開始時点と継続期間を簡単に表現できます。

broken_barh() の基本構文

ax.broken_barh(xranges, yrange) の主な引数は以下の通りです。

  • xranges:各バーの「開始位置」と「幅」を (start, width) のタプルのリストで指定します。
  • yrange:バーのY軸方向の「開始位置」と「高さ」を (ymin, height) のタプルで指定します。

実装手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。

  • figure とサブプロット(axes)を作成します。

  • broken_barh() を使って水平方向の矩形群を描画します。

  • 軸のY方向・X方向の表示範囲(ylim / xlim)を設定します。

  • show() メソッドで図を表示します。

サンプルコード

import matplotlib.pyplot as plt

# 図のサイズを設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# figure とサブプロットを作成
fig, ax = plt.subplots()

# 水平方向の矩形(バー)を描画
ax.broken_barh([(110, 30), (150, 10)], (10, 9), facecolors='tab:blue')
ax.broken_barh([(10, 50), (100, 20), (130, 10)], (20, 9), facecolors='tab:orange')

# 軸の表示範囲を設定
ax.set_ylim(5, 35)
ax.set_xlim(0, 200)

# グラフを表示
plt.show()

実行結果

上記のコードを実行すると、2つのタスクグループ(青色とオレンジ色のバー)が異なる高さに描画されたガントチャートが出力されます。各バーの横方向の位置と幅が、その作業の開始時刻と所要時間に対応しています。

matplotlibでガントチャート(ガントプロット)を作成する方法

このように broken_barh() を活用すれば、複雑なライブラリを追加することなく、matplotlib だけで簡潔にガントチャートを作成できます。タスクの追加や期間の変更も、xranges の値を調整するだけで柔軟に対応可能です。

  1. Python Matplotlibで3Dグラフをプロットする方法を解説

    PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使

  2. Matplotlibで任意のデータを使って4Dプロットを作成する方法

    Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x