How to change the text colour of font in legend?

喜你入骨 提交于 2019-12-20 17:26:58

问题


Is there a way to change the font colour of the legend in a matplotlib plot?

Specially in occasions where the background of the plot is dark, the default black text in the legend is hard or impossible to read.


回答1:


call Legend.get_texts() will get a list of Text object in the legend object:

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



回答2:


You can also do it with setp():

import pylab as plt

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

this method also allows you to set the fontsize and any number of other font properties in one line (listed here: http://matplotlib.org/users/text_props.html)

full example:

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()



回答3:


Because plt.setp broadcasts over iterables, you can also modify the text color in one line:

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

The last line will apply the colour to all elements in the collection of texts.



来源:https://stackoverflow.com/questions/18909696/how-to-change-the-text-colour-of-font-in-legend

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!