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

Matplotlibで壊れた水平棒グラフ(broken barh)を作成する方法

Matplotlibでは、broken_barh()メソッドを使うことで、途中が途切れた水平棒グラフ(壊れた棒グラフ)を簡単に描画できます。この形式のグラフは、ガントチャートやタイムラインの可視化など、時間の経過に伴う区間データを表現する際に特に便利です。

以下の手順に従って作成できます。

  • 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
  • 図(figure)とサブプロット(axes)のセットを作成します。
  • 水平方向に並ぶ長方形の系列をプロットします。
  • X軸・Y軸のスケール、X軸ラベル、Y目盛りおよびY目盛りラベルを設定します。
  • グリッド線を有効化して見やすさを向上させます。
  • annotate()メソッドを使用して、特定の位置を指し示すテキスト(注釈)を表示します。
  • show()メソッドを呼び出して図を表示します。

コード例

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

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', 'tab:green', 'tab:red'))
ax.set_ylim(5, 35)
ax.set_xlim(0, 200)
ax.set_xlabel('seconds since start')
ax.set_yticks([15, 25])
ax.set_yticklabels(['Bill', 'Jim'])
ax.grid(True)

ax.annotate('race interrupted', (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()

コードのポイント

broken_barh()の第1引数には、各長方形の開始位置と幅をタプルのリストとして渡します。第2引数にはY方向の開始位置と高さを指定します。また、facecolors引数に色のタプルを渡すことで、長方形ごとに異なる色を割り当てることも可能です。

注釈部分では、xytexttextcoords='axes fraction'を組み合わせることで、矢印の先端(データ座標上の点)とテキストの配置位置(Axesに対する相対座標)を柔軟に制御しています。

出力結果

Matplotlibで壊れた水平棒グラフ(broken barh)を作成する方法

実行すると、BillとJimそれぞれの走行時間帯が横棒として描画され、Jimの区間の中断箇所に「race interrupted」という注釈が矢印付きで表示されます。

  1. Matplotlibで棒グラフのラベルに絵文字を表示する方法

    Matplotlibでは、annotate()メソッドを使うことで、棒グラフの各バーの上部に絵文字をラベルとして簡単に配置できます。データの視覚化にアクセントを加えたい場合に便利なテクニックです。実装手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。頻度を表すリストfreqsと、絵文字を含むラベルのリストlabelsを作成します。figure()メソッドを使用して、新しい図を作成します。bar()メソッドで棒グラフを描画します。annotate()メソッドを使って、各バーの上に絵文字をラベルとして配置します。show()メソッドで図を表示します。コード例impo

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

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