Matplotlibで壊れた横棒グラフ(broken_barh)を作成する方法
Matplotlibで途中に欠け(ギャップ)のある横棒グラフを作成するには、broken_barh()メソッドを使用します。このメソッドは、1本の棒の中に複数の矩形を横方向に並べて描画できるため、時間帯ごとの稼働状況や中断を含むデータなどを視覚化するのに便利です。以下の手順で作成していきましょう。
- 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
- FigureとAxes(サブプロット)を作成します。
broken_barh()で横方向の矩形のシーケンスを描画します。- X軸・Y軸の表示範囲を設定します。
- グリッド線を表示するよう設定します。
- 注釈(アノテーション)を追加します。
show()メソッドで図を表示します。
コード例
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
# 横方向に並べる矩形のシーケンスを描画
# 第1引数:(x開始位置, 幅) のタプルのリスト
# 第2引数:(y開始位置, 高さ)
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', 'tab:green', 'tab:red'))
# X軸・Y軸の表示範囲を設定
ax.set_ylim(5, 35)
ax.set_xlim(0, 200)
# グリッド線を表示
ax.grid(True)
# 壊れた棒に注釈を追加
ax.annotate('レース中断', (61, 25),
xytext=(0.8, 0.9), textcoords='axes fraction',
arrowprops=dict(facecolor='black', shrink=0.05),
fontsize=16,
horizontalalignment='right', verticalalignment='top')
plt.show()
実行結果
上記のコードを実行すると、次のような出力が得られます。


ポイント解説
- 第1引数:各セグメントの開始位置と幅を
(x_start, width)のタプルとしてリストで渡します。タプル同士の間隔がそのまま「欠け」として表現されます。 - 第2引数:棒の縦方向の位置と高さを
(y_start, height)で指定します。 - facecolors:単一の色名、またはセグメントごとに色を変えたい場合は色名のタプルを指定できます。
- annotate():矢印付きの注釈を追加でき、
textcoords='axes fraction'を使うと軸の比率位置にテキストを配置できます。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
PythonのMatplotlibでワッフルチャートを作成する方法を解説
ワッフルチャート(Waffle Chart)は、目標に対する進捗状況を視覚的に表現するのに適した、魅力的なデータ可視化手法です。四角いマスが並ぶ様子がワッフルに似ていることからこの名前が付けられており、構成比や達成率を直感的に伝えられます。Pythonでワッフルチャートを作成するには、pywaffleライブラリを使用します。新しい図を作成する際、または既存の図を有効化する際に、FigureClass=Waffleを指定することで簡単に描画できます。作成手順辞書を使ってPandasのデータフレームを作成します。plt.figure()で新しい図を作成する際に、FigureClass=Waffle