Python 如何更改图例中字体的文字颜色?

Python 如何更改图例中字体的文字颜色?,python,colors,fonts,matplotlib,legend,Python,Colors,Fonts,Matplotlib,Legend,是否有方法更改matplotlib绘图中图例的字体颜色 特别是在绘图背景较暗的情况下,图例中的默认黑色文本很难或无法读取。调用图例。获取文本()将获取图例对象中的文本对象列表: import pylab as pl pl.plot(randn(100), label="randn") l = legend() for text in l.get_texts(): text.set_color("red") 也可以使用setp()执行此操作: 此方法还允许您在一行中设置fontsize和

是否有方法更改matplotlib绘图中图例的字体颜色


特别是在绘图背景较暗的情况下,图例中的默认黑色文本很难或无法读取。

调用
图例。获取文本()
将获取图例对象中的文本对象列表:

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

也可以使用setp()执行此操作:

此方法还允许您在一行中设置fontsize和任意数量的其他字体属性(此处列出:)

完整示例:

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

由于
plt.setp
通过iterables进行广播,因此您还可以在一行中修改文本颜色:

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

最后一行将把颜色应用于文本集合中的所有元素。

从matplotlib 3.3.0版开始,您现在可以在中直接使用关键字参数
labelcolor


通过设置
labelcolor='linecolor'
,使用与相应艺术家相同的颜色的示例:

导入matplotlib.pyplot作为plt
将numpy作为np导入
plt.图(figsize=(4,3))
plt.plot(np.arange(10),np.rand.rand(10)*0',-',label='spam')
plt.plot(np.arange(10),np.rand.rand(10)*1',:',label='ham')
plt.plot(np.arange(10),np.rand(10)*2,'o',label='egs')
plt.图例(labelcolor='linecolor')


通过设置
labelcolor='w'
将所有文本更改为白色的示例,例如,对于深色背景:

导入matplotlib.pyplot作为plt
将numpy作为np导入
plt.图(figsize=(4,3))
plt.plot(np.arange(10),np.rand.rand(10)*0',-',label='spam')
plt.plot(np.arange(10),np.rand.rand(10)*1',:',label='ham')
plt.plot(np.arange(10),np.rand(10)*2,'o',label='egs')
plt.图例(facecolor='k',labelcolor='w')

任何想要更改传奇标题颜色的人;似乎只能通过侧门使用:


leg._legend_title_box._text.set_color(“#FFFFFF”)

您还可以通过kwarg
prop
思想分享,将您想要的字体属性传递到
legend
变量的来源:)
# Show some cool graphs
legend = plt.legend()
plt.setp(legend.get_texts(), color='w')