Python 如何更改单个图例标签大小的大小?

Python 如何更改单个图例标签大小的大小?,python,matplotlib,plot,Python,Matplotlib,Plot,如图所示,希腊字母的相同字体大小似乎比普通字符小。我想让它们看起来一样大,如何做到这一点 图的代码如下所示: import numpy as np import math import matplotlib.pyplot as plt alpha=np.arange(0,1,0.01) gamma=np.sin(2*np.pi*alpha) x=alpha y=np.cos(2*np.pi*x) plt.plot(x,y,label=r'cosine function') plt.plot

如图所示,希腊字母的相同字体大小似乎比普通字符小。我想让它们看起来一样大,如何做到这一点

图的代码如下所示:

import numpy as np
import math 
import matplotlib.pyplot as plt

alpha=np.arange(0,1,0.01)
gamma=np.sin(2*np.pi*alpha)
x=alpha
y=np.cos(2*np.pi*x)
plt.plot(x,y,label=r'cosine function')
plt.plot(alpha,gamma,label=r'$\gamma=\sin(\alpha)$')
plt.legend(loc=0,fontsize=20)
plt.show()

这有一点小技巧。如果您只是对解决方案感兴趣,请向下滚动至结尾

plt.legend
返回一个
legend
对象,其方法允许您修改图例的外观。首先,我们将保存
图例
对象:

legend = plt.legend(loc=0, fontsize=20)
text = legend.get_texts()[1]
我们正在寻找的方法是
Legend.get_text()
。这将返回一个
文本
对象列表,这些对象的方法控制图例文本的大小、颜色、字体等。我们只需要第二个
文本
对象:

legend = plt.legend(loc=0, fontsize=20)
text = legend.get_texts()[1]
Text
对象有一个名为
Text.setfontsize
的方法。让我们试试看。总之,代码的结尾应该如下所示:

legend = plt.legend(loc=0,fontsize=20)
text = legend.get_texts()[1]
text.set_fontsize(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)
这就是我们得到的:

嗯。看起来两个传奇条目都变大了。这当然不是我们想要的。这里发生了什么,我们如何解决

其缺点是每个图例条目的大小、颜色等由
FontProperties
类的实例管理。问题是这两个条目共享同一个实例。因此,设置一个实例的大小也会更改另一个实例的大小

解决方法是创建一个新的、独立的字体属性实例,如下所示。首先,我们得到我们的文本,就像以前一样:

text = legend.get_texts()[1]
现在,我们不需要立即设置大小,而是获取字体属性对象,然后确保复制它:

现在,我们将这个新的独立字体属性作为文本属性的实例:

text.set_fontproperties(props)
现在,我们可以尝试设置此图例条目的大小:

text.set_size(40)
解决方案 代码的结尾现在应该如下所示:

legend = plt.legend(loc=0,fontsize=20)
text = legend.get_texts()[1]
text.set_fontsize(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)
制作一个看起来像


这是一个很好的答案!不仅给出解决方案,还教会你如何思考。