Matplotlibは、視覚化を作成するための強力なPythonライブラリです。凡例は明確性のために不可欠であり、特にフォントサイズを制御することは、効果的なコミュニケーションにとって重要です。この記事では、Matplotlibプロットで凡例のフォントサイズを調整する複数の方法について説明し、視覚的に魅力的で理解しやすいグラフを作成できるようにします。
目次
凡例フォントサイズの大域的調整
この方法は、スクリプト内のすべての凡例のフォントサイズを変更します。複数のプロット全体で一貫したフォントサイズを維持するのに最適です。これは、rcParams
辞書を変更することで実現できます。
import matplotlib.pyplot as plt
import matplotlib as mpl
# フォントサイズを大域的に設定
mpl.rcParams['legend.fontsize'] = 12
# サンプルプロット
plt.plot([1, 2, 3], [4, 5, 6], label='Line 1')
plt.plot([1, 2, 3], [6, 4, 2], label='Line 2')
# 凡例を追加
plt.legend()
plt.show()
これにより、スクリプト内の後続のすべての凡例のフォントサイズが12ポイントに設定されます。この変更は、すべての凡例に大域的に影響することに注意してください。
凡例フォントサイズの局所的制御
より局所的な制御のために、plt.legend()
関数内で直接フォントサイズを指定します。これにより、個々の凡例に対して異なるフォントサイズを設定できます。
import matplotlib.pyplot as plt
# サンプルプロット
plt.plot([1, 2, 3], [4, 5, 6], label='Line 1')
plt.plot([1, 2, 3], [6, 4, 2], label='Line 2')
# 指定されたフォントサイズで凡例を追加
plt.legend(fontsize=14)
plt.show()
これにより、この凡例のフォントサイズが14ポイントに具体的に設定されます。これは、大域的なrcParams
メソッドと比較して、より大きな柔軟性を提供します。
詳細な凡例のカスタマイズ
正確な制御のために、凡例オブジェクトに直接アクセスしてそのプロパティを変更します。これにより、フォントサイズ以外にも、より複雑なカスタマイズが可能になります。
import matplotlib.pyplot as plt
# サンプルプロット
plt.plot([1, 2, 3], [4, 5, 6], label='Line 1')
plt.plot([1, 2, 3], [6, 4, 2], label='Line 2')
# 凡例を追加
legend = plt.legend()
# 凡例テキストにアクセスしてフォントサイズを設定
for text in legend.get_texts():
text.set_fontsize(16)
plt.show()
これは、各凡例項目を反復処理し、個別にフォントサイズを設定します。単一の凡例内でフォントサイズを変えるのに役立ちます。
結論
この記事では、Matplotlib凡例のフォントサイズを調整する3つの方法を紹介しました。大域的な設定(rcParams
)、局所的な制御(plt.legend(fontsize=...)
)、および凡例オブジェクトの詳細な操作です。ニーズとコーディングスタイルに最適な方法を選択してください。
FAQ
Q: サイズ以外のフォントプロパティも調整できますか?
A: はい、同様の手法を使用して、フォントファミリー、スタイル、ウェイトなどを変更できます。詳細については、matplotlib.font_manager
モジュールを参照してください。たとえば、plt.legend()
にfontweight='bold'
を追加するか、3番目の方法でtext.set_fontweight()
を使用します。
Q: 凡例がプロットと重なっています。どうすれば修正できますか?
A: plt.legend()
のloc
引数を使用して凡例の位置を変更するか、legend.set_bbox_to_anchor()
を使用して手動で配置します。プロットサイズを調整するか、凡例項目を減らすことを検討してください。
Q: フォントサイズの変更が適用されません。何が間違っていますか?
A: フォントサイズを設定した後にplt.show()
が呼び出されていることを確認してください。フォント設定との競合や、Matplotlibのインストールが古くなっていることが原因で問題が発生する可能性もあります。カーネルを再起動するか、Matplotlibを更新してみてください。