对this question的回答似乎表明,设置图例字体属性的一种方法是通过以下方式:
import pylab as plt
leg = plt.legend(framealpha = 0, loc = 'best')
for text in leg.get_texts():
plt.setp(text, color = 'w')
需要调用plt.legend()并收集所有图例,并且不区分某些特定图例。在我的代码中,我有几个不同的情节。例如,dicts1和dicts2是包含数据框的字典:
def compare_data(dicts1, dicts2):
for dic in dicts1:
df = dic['df']
style = dic['style']
plt.plot(df['time'], df['y'], **style)
## style contains the legend text
## use the default font
for dic in dicts2:
df = dic['df']
style = dic['style']
plt.plot(df['time'], df['y'], **style)
## only modify the font color for the legends of these !!
# finally draw the legend with the common properties:
plt.legend(loc = 'best', frameon=False)
如何修改仅dict2而不是dict1的图例的字体颜色? dict1的图例颜色值保留为默认值。两个字典中的元素数都是任意的。
答案 0 :(得分:0)
据我所知,在plot()
时还没有办法指定图例标签的属性。
我假设您可以知道每个词典中有多少个数据集,并且您为每个词典生成了一个图例。如果是这样,那么仅修改与第二行系列相对应的图例很容易:
dict1 = {f'label#1 {i+1}':np.random.random(size=(5,)) for i in range(3)}
dict2 = {f'label#2 {i+1}':np.random.random(size=(5,)) for i in range(4)}
for l,d in dict1.items():
plt.plot(d, label=l)
for l,d in dict2.items():
plt.plot(d, label=l)
leg = plt.legend()
for text in leg.get_texts()[len(dict1):]:
plt.setp(text, color = 'w')