【matplotlib入門】縦線(垂直線)に凡例を追加する方法をわかりやすく解説
matplotlibでグラフに描画した縦線(垂直線)に対して、凡例を表示したいケースはよくあります。しかし、単純にplot()で描いた線だけでは、マーカー付きの見やすい凡例を作るのが難しいこともあります。
本記事では、matplotlib.lines.Line2Dを使って、縦線用のカスタム凡例を追加する手順をサンプルコード付きで解説します。
縦線の凡例を追加する基本の手順
matplotlibで縦線の凡例を追加するには、以下のステップを実行します。
- 図のサイズと余白を設定する:
rcParamsでフィギュアサイズやサブプロット間のパディングを調整します。 - 図とサブプロットを作成する:
plt.subplots()でフィギュアとAxesを生成します。 - 縦線をプロットする:赤色など任意の色で垂直線を描画します。
- カスタム凡例用のハンドルを作成する:
Line2Dオブジェクトを使い、実線スタイルと各頂点にマーカーを持つラインを定義します。 - 凡例を配置する:
legend()メソッドで縦線の凡例をグラフ上に表示します。 - 図を表示する:
show()メソッドで結果を出力します。
サンプルコード
実際のコードは以下の通りです。
import matplotlib.pyplot as plt from matplotlib import lines plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True fig, ax = plt.subplots() color = 'red' ax.plot([0, 0], [0, 3], color=color) vertical_line = lines.Line2D([], [], color=color, marker='|', linestyle='None', markersize=10, markeredgewidth=1.5, label='Vertical line') plt.legend(handles=[vertical_line], loc='upper right') plt.show()
コードのポイント解説
1. 空のLine2Dオブジェクトを作る
lines.Line2D([], [], ...)のようにデータを空にすることで、このオブジェクト自体はグラフに描画されず、凡例専用のハンドルとして機能します。label引数に凡例に表示したいテキストを指定します。
2. マーカーで縦線らしさを表現する
marker='|'を指定すると縦棒型のマーカーが使えます。linestyle='None'で線を消し、markersizeやmarkeredgewidthでマーカーの大きさ・太さを調整することで、縦線を象徴的な凡例にできます。
3. handlesで凡例を明示的に指定
plt.legend(handles=[vertical_line])とすることで、グラフに描画した実際の線ではなく、作成したカスタムハンドルだけを凡例に表示できます。loc='upper right'で凡例の位置を右上に設定しています。
実行結果
上記コードを実行すると、赤い縦線が描かれたグラフの右上に「Vertical line」というラベルの付いた凡例が表示されます。


まとめ
matplotlibで縦線に凡例を付けたい場合は、matplotlib.lines.Line2Dで空のラインオブジェクトを作成し、それをlegend()のhandlesに渡すのが定番の方法です。マーカーや線種を自由に組み合わせられるため、グラフの可読性を高めたいときにぜひ活用してください。
-
Matplotlibでnumpyのdatetime64型の時系列データをプロットする方法
PythonのMatplotlibを使って時系列データをグラフ化する方法を解説します。日付や時刻のデータ(datetime64型など)は、そのままplot()メソッドに渡すだけで自動的に軸に反映されるため、非常に簡単です。基本的な手順numpyを使ってx(日時)とy(数値)のデータを作成する。plot()メソッドで作成したxとyをプロットする。show()メソッドで図を表示する。サンプルコードimport matplotlib.pyplot as plt import datetime import numpy as np plt.rcParams[figure.figsize] = [7.
-
Python/MatplotlibでX軸ラベルを縦向きに表示した棒グラフを作成する方法
Matplotlibで棒グラフを作成する際、X軸のラベルが長いと文字同士が重なって読みにくくなることがあります。そんなときは、ラベルを縦向き(垂直)に表示するとグラフがぐっと見やすくなります。 基本的な流れは、plt.bar() でバーを作成し、plt.xticks() でX軸の目盛りラベルを設定します。その際、rotation 引数に「vertical」または「horizontal」を指定することで、ラベルの向きを自由に制御できます。 手順 バーの高さを表すリスト bars_heights と、ラベルを表すリスト bars_label を作成します。 bar() メソッドを使い、bars_