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つのタスクグループ(青色とオレンジ色のバー)が異なる高さに描画されたガントチャートが出力されます。各バーの横方向の位置と幅が、その作業の開始時刻と所要時間に対応しています。

このように broken_barh() を活用すれば、複雑なライブラリを追加することなく、matplotlib だけで簡潔にガントチャートを作成できます。タスクの追加や期間の変更も、xranges の値を調整するだけで柔軟に対応可能です。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
Matplotlibで任意のデータを使って4Dプロットを作成する方法
Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x