fir*_*fly 20 python fonts colors matplotlib legend
有没有办法在matplotlib图中更改图例的字体颜色?
特别是在情节背景较暗的情况下,图例中的默认黑色文字很难或无法读取.
HYR*_*YRY 23
call Legend.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")
Run Code Online (Sandbox Code Playgroud)
Zau*_*aus 14
从 matplotlib 3.3.0 版开始,您现在可以直接labelcolor在matplotlib.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')
Run Code Online (Sandbox Code Playgroud)
通过设置将所有文本更改为白色的示例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')
Run Code Online (Sandbox Code Playgroud)
wor*_*ise 12
您也可以使用setp():
import pylab as plt
leg = plt.legend(framealpha = 0, loc = 'best')
for text in leg.get_texts():
plt.setp(text, color = 'w')
Run Code Online (Sandbox Code Playgroud)
此方法还允许您在一行中设置fontsize和任意数量的其他字体属性(在此处列出: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()
Run Code Online (Sandbox Code Playgroud)
Til*_*ann 10
因为plt.setp可以通过迭代进行广播,所以您还可以在一行中修改文本颜色:
# Show some cool graphs
legend = plt.legend()
plt.setp(legend.get_texts(), color='w')
Run Code Online (Sandbox Code Playgroud)
最后一行将颜色应用于文本集合中的所有元素.
| 归档时间: |
|
| 查看次数: |
20747 次 |
| 最近记录: |