web-dev-qa-db-ja.com

凡例のフォントのテキスト色を変更するにはどうすればよいですか?

Matplotlibプロットの凡例のフォント色を変更する方法はありますか?

特に、プロットの背景が暗い場合、凡例のデフォルトの黒いテキストは読みにくいか、または読むことができません。

25
firefly

Legend.get_texts()を呼び出すと、legendオブジェクト内のTextオブジェクトのリストが取得されます。

import pylab as pl
pl.plot(randn(100), label="randn")
l = legend()
for text in l.get_texts():
    text.set_color("red")
25
HYRY

Setp()でも実行できます。

import pylab as plt

leg = plt.legend(framealpha = 0, loc = 'best')
for text in leg.get_texts():
    plt.setp(text, color = 'w')

このメソッドを使用すると、fontsizeおよびその他のフォントプロパティを1行で設定することもできます(ここにリスト: http://matplotlib.org/users/text_props.html

完全な例:

import pylab as plt

x = range(100)
y1 = range(100,200)
y2 = range(50,150)

fig = plt.figure(facecolor = 'k')
ax = fig.add_subplot(111, axisbg = 'k')
ax.tick_params(color='w', labelcolor='w')
for spine in ax.spines.values():
    spine.set_edgecolor('w')
ax.plot(x, y1, c = 'w', label = 'y1')
ax.plot(x, y2, c = 'g', label = 'y2')

leg = plt.legend(framealpha = 0, loc = 'best')
for text in leg.get_texts():
    plt.setp(text, color = 'w')

plt.show()
14
wordsforthewise

plt.setp反復可能オブジェクトを介してブロードキャストします。1行でテキストの色を変更することもできます。

# Show some cool graphs
legend = plt.legend()
plt.setp(legend.get_texts(), color='w')

最後の行は、テキストのコレクション内のすべての要素に色を適用します。

12
Till Hoffmann