39

有没有办法改变 matplotlib 图中图例的字体颜色?

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

4

5 回答 5

41

callLegend.get_texts()将获取图例对象中的 Text 对象列表:

import pylab as pl
pl.plot(randn(100), label="randn")
l = legend()
for text in l.get_texts():
    text.set_color("red")
于 2013-09-20T06:47:34.430 回答
19

因为plt.setp通过迭代广播,你也可以在一行中修改文本颜色:

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

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

于 2017-11-10T19:25:35.667 回答
17

你也可以用 setp() 来做:

import pylab as plt

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

此方法还允许您在一行中设置字体大小和任意数量的其他字体属性(此处列出: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()
于 2015-03-24T04:35:00.090 回答
17

从 matplotlib 版本 3.3.0 开始,您现在可以直接labelcolormatplotlib.pyplot.legend().


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

import matplotlib.pyplot as plt
import numpy as np

plt.figure(figsize=(4, 3))
plt.plot(np.arange(10), np.random.rand(10) * 0, '-', label='spam')
plt.plot(np.arange(10), np.random.rand(10) * 1, ':', label='ham')
plt.plot(np.arange(10), np.random.rand(10) * 2, 'o', label='eggs')
plt.legend(labelcolor='linecolor')

matplotlib 图例文本颜色:'linecolor'


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

import matplotlib.pyplot as plt
import numpy as np

plt.figure(figsize=(4, 3))
plt.plot(np.arange(10), np.random.rand(10) * 0, '-', label='spam')
plt.plot(np.arange(10), np.random.rand(10) * 1, ':', label='ham')
plt.plot(np.arange(10), np.random.rand(10) * 2, 'o', label='eggs')
plt.legend(facecolor='k', labelcolor='w')

matplotlib 图例文本颜色:深色背景的所有文本均为白色

于 2020-08-05T20:56:12.287 回答
1

任何想要更改图例标题颜色的人;似乎只能通过侧门获得:

leg._legend_title_box._text.set_color('#FFFFFF')

于 2020-08-25T00:56:31.363 回答