PythonとMatplotlibで折れ線グラフの終端に注釈(ラベル)を付ける方法
PythonとMatplotlibを使えば、折れ線グラフの各線の終端に直接ラベル(注釈)を表示できます。これにより、凡例を目で追わなくても、どの線が何を表しているのか一目でわかる、読みやすいグラフを作成できます。
実装の手順
- 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
- データの行数を指定する変数 rows を初期化します。
- Pandasのデータフレーム(長方形の表形式データ)を作成します。
- データフレームの累積和(cumsum)を計算します。
- plot()メソッドでデータフレームをプロットします。
- 各line(線オブジェクト)とname(列名)を反復処理し、線の終端に注釈を付けていきます。
- annotate()メソッドを使用して、列名、xy座標、線の色、フォントサイズなどを指定します。
- 図に凡例を配置します。
- show()メソッドで図を表示します。
コード例
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
rows = 75
df = pd.DataFrame(np.random.randint(-5, 5, size=(rows, 3)),
columns=['A', 'B', 'C'])
df = df.cumsum()
ax = df.plot()
for line, name in zip(ax.lines, df.columns):
y = line.get_ydata()[-1]
ax.annotate(name, xy=(1, y), xytext=(6, 0),
color=line.get_color(), xycoords=ax.get_yaxis_transform(),
textcoords="offset points", size=14, va="center")
plt.legend(loc='lower left')
plt.show()
コードのポイント解説
このコードを理解する上で重要なポイントをいくつか紹介します。
- xycoords=ax.get_yaxis_transform():x=1(プロット領域の右端)を基準位置としつつ、y座標は実際のデータ値として扱える混合座標系を指定しています。これにより、線の最後の点の高さに正確に注釈を配置できます。
- textcoords="offset points":注釈テキストを基準点から6ポイント右にずらして配置し、線と重ならないようにしています。
- color=line.get_color():各注釈の文字色を、対応する線の色と自動的に一致させています。
- va="center":テキストを垂直方向に中央揃えで配置することで、線の終点ときれいに揃えます。
出力結果

スクリプトを実行すると、ランダムなデータから生成した3本の折れ線(A・B・C)の右端に、それぞれの線と同じ色で列名が表示されます。同時に、凡例がグラフの左下に配置され、線の終端ラベルと組み合わせることで非常に見やすいチャートになります。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
PythonとMatplotlibで複数のプロットを1つの図に描画する方法
Matplotlibは、データ可視化のために広く利用されている人気のPythonパッケージです。データの可視化は非常に重要なステップです。生の数値を目で追ったり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。また、定量的な洞察を聴衆に対して効果的に伝える手段としても役立ちます。Matplotlibは、データをもとに2次元のプロットを作成するために使われます。オブジェクト指向のAPIを備えており、Pythonアプリケーションへプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyderなどの開