有一招此一点点。如果您只是对解决方案感兴趣,请向下滚动到最后。
plt.legend
返回一个Legend
对象的方法,允许您修改图例的外观。所以首先我们要保存Legend
对象:
legend = plt.legend(loc=0, fontsize=20)
我们正在寻找的方法是Legend.get_texts()
。这将返回一个Text
对象的列表,其对象的方法控制图例文本的大小,颜色,字体等。我们只希望第二Text
对象:
text = legend.get_texts()[1]
的Text
对象有一个名为Text.set_fontsize
方法。所以让我们试试。总而言之,你的代码到底应该是这样的:
legend = plt.legend(loc=0,fontsize=20)
text = legend.get_texts()[1]
text.set_fontsize(40)
而这就是我们得到:
嗯。它看起来像这两个的图例条目都做得更大。这当然不是我们想要的。这里发生了什么,我们如何解决它?
它的缺点是每个图例条目的大小,颜色等由FontProperties
类的实例管理。问题是这两个条目共享相同的实例。所以设置一个实例的大小也会改变另一个实例的大小。
解决方法是创建一个新的独立字体属性实例,如下所示。首先,我们得到我们的文字,就像以前一样:
text = legend.get_texts()[1]
现在,而不是立即设置大小,我们得到的字体属性的对象,但随后确保复制它:
props = text.get_font_properties().copy()
现在我们使这个新的,独立字体属性例如我们的文本的属性:
text.set_fontproperties(props)
而且我们现在可以尝试设置这个图例项的大小:
text.set_size(40)
解决方案
代码的结束,现在应该是这样的:
legend = plt.legend(loc=0,fontsize=20)
text = legend.get_texts()[1]
props = text.get_font_properties().copy()
text.set_fontproperties(props)
text.set_size(40)
生产的情节看起来像
来源
2015-11-18 15:37:13
jme
这是一个很好的答案!不仅给出解决方案,还教你如何思考。 – buzhidao
很高兴我能帮忙! – jme