[英]How to change the size of individual legend label size?
如圖所示,希臘字母的相同字體大小似乎小於普通字符。 我想讓它們看起來大小相同,如何實現這一目標?
圖表的代碼如下:
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
對象:
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)
制作一個看起來像的情節
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.