簡體   English   中英

如何更改單個圖例標簽大小的大小?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM