Matplotlibは、視覚化を作成するための強力なPythonライブラリです。凡例はプロットを理解するために不可欠であり、その外観をカスタマイズすることで可読性が向上します。この記事では、Matplotlibの凡例の線幅を調整する2つの方法を示します。
目次
set_linewidth()
による線幅の直接設定
set_linewidth()
メソッドは、個々の凡例線の精密な制御を提供します。これは、Line2Dオブジェクトである凡例のlegendHandles
を直接操作します。
import matplotlib.pyplot as plt
# サンプルデータ
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [1, 3, 5, 2, 4]
# プロットの作成
fig, ax = plt.subplots()
line1, = ax.plot(x, y1, label='Line 1', linewidth=2)
line2, = ax.plot(x, y2, label='Line 2', linewidth=1)
# 凡例の作成
legend = ax.legend()
# 線幅のアクセスと変更
legend.legendHandles[0].set_linewidth(4) # 凡例内のLine 1
legend.legendHandles[1].set_linewidth(3) # 凡例内のLine 2
# プロットの表示
plt.show()
このコードは最初にデータをプロットし、次にlegend.legendHandles
を介して凡例ハンドルにアクセスします。set_linewidth()
は各線の幅を調整します。legendHandles[0]
は最初の行を参照し、以降も同様です。
簡潔な変更のためのmatplotlib.pyplot.setp()
の使用
matplotlib.pyplot.setp()
は、複数のプロパティを同時に変更するよりコンパクトな方法を提供します。
import matplotlib.pyplot as plt
# サンプルデータ(前と同じ)
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [1, 3, 5, 2, 4]
# プロットの作成
fig, ax = plt.subplots()
line1, = ax.plot(x, y1, label='Line 1', linewidth=2)
line2, = ax.plot(x, y2, label='Line 2', linewidth=1)
# 凡例の作成
legend = ax.legend()
# setp()を使用した線幅の変更
plt.setp(legend.legendHandles, 'linewidth', [4, 3])
# プロットの表示
plt.show()
plt.setp()
は、すべてのハンドルに対してlinewidth
を効率的に設定します。[4, 3]
は、表示順に各線の幅を指定します。
よくある質問
Q: 3本以上の線がある場合はどうなりますか?
A: 両方の方法は簡単に適応できます。set_linewidth()
の場合は、インデックスを拡張します。setp()
の場合は、線幅のリストが凡例ハンドルの数と一致することを確認します。
Q: 他の凡例のプロパティを変更できますか?
A: はい、両方のメソッドで色、線種、マーカーなどのプロパティを変更できます。Matplotlibのドキュメントを参照してください。
Q: どの方向法を選択すべきですか?
A: set_linewidth()
は、個々の線に対してきめ細かい制御を提供します。setp()
は、すべての線で同じプロパティを変更する方が簡潔です。ニーズとコーディングスタイルに基づいて選択してください。
この記事では、Matplotlib凡例の明瞭さと視覚的なインパクトを高めるための2つの効果的なアプローチを示しました。高度なカスタマイズについては、Matplotlibのドキュメントを参照してください。