![](/img/trans.png)
[英]How to add common Tittle, label and legend in Matplotlib.pyplot?
[英]How to change legend size with matplotlib.pyplot
這里有一個簡單的問題:我試圖使用matplotlib.pyplot
使我的圖例的大小變小(即,文本變小)。 我使用的代碼是這樣的:
plot.figure()
plot.scatter(k, sum_cf, color='black', label='Sum of Cause Fractions')
plot.scatter(k, data[:, 0], color='b', label='Dis 1: cf = .6, var = .2')
plot.scatter(k, data[:, 1], color='r', label='Dis 2: cf = .2, var = .1')
plot.scatter(k, data[:, 2], color='g', label='Dis 3: cf = .1, var = .01')
plot.legend(loc=2)
您可以通過調整prop
關鍵字為圖例設置單獨的字體大小。
plot.legend(loc=2, prop={'size': 6})
這需要與matplotlib.font_manager.FontProperties
屬性對應的關鍵字字典。 請參閱圖例的文檔:
關鍵字參數:
prop: [ None | FontProperties | dict ] A matplotlib.font_manager.FontProperties instance. If prop is a dictionary, a new instance will be created with prop. If None, use rc settings.
從版本1.2.1 開始,也可以使用關鍵字fontsize
。
使用import matplotlib.pyplot as plt
方法一:調用legend時指定fontsize(重復)
plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size
使用此方法,您可以在創建時為每個圖例設置字體大小(允許您擁有多個不同字體大小的圖例)。 但是,每次創建圖例時,您都必須手動鍵入所有內容。
(注意:@Mathias711 在他的回答中列出了可用的命名字體大小)
方法二:在rcParams中指定fontsize(方便)
plt.rc('legend',fontsize=20) # using a size in points
plt.rc('legend',fontsize='medium') # using a named size
使用此方法,您可以設置默認圖例字體大小,除非您使用方法 1 另行指定,否則所有圖例都將自動使用該字體大小。這意味着您可以在代碼開頭設置圖例字體大小,而不必擔心為每個單獨的圖例設置它.
如果您使用命名大小,例如'medium'
,則圖例文本將與font.size
中的全局font.size
一起rcParams
。 要更改font.size
使用plt.rc(font.size='medium')
這應該做
import pylab as plot
params = {'legend.fontsize': 20,
'legend.handlelength': 2}
plot.rcParams.update(params)
然后再做劇情。
還有很多其他的 rcParams,它們也可以在 matplotlibrc 文件中設置。
也大概你可以通過一個matplotlib.font_manager.FontProperties
實例來改變它,但這我不知道該怎么做。 --> 見 Yann 的回答。
有多種設置可用於調整圖例大小。 我覺得最有用的兩個是:
legend(..., labelspacing=0.2)
字體, legend(..., labelspacing=0.2)
會將條目之間的間距減少到 2 legend(..., labelspacing=0.2)
。 我安裝的默認值約為 0.5。legend(..., prop={'size':8})
設置8 磅字體。 我安裝的默認值大約是 14 點。 此外, 圖例的文檔列出了許多其他填充和間距參數,包括: borderpad
, handlelength
, handletextpad
, borderaxespad
,和columnspacing
。 這些都遵循與標簽間距相同的形式,區域也是字體大小的倍數。
也可以使用matplotlibrc 文件將這些值設置為所有圖形的默認值。
現在在 2021 年,使用 matplotlib 3.4.2,您可以設置圖例字體
plt.legend(title="My Title", fontsize=10, title_fontsize=15)
其中fontsize
是圖例中項目的字體大小, title_fontsize
是圖例標題的字體大小。 matplotlib 文檔中的更多信息
在我的安裝中,FontProperties 僅更改文本大小,但它仍然太大且有間距。 我在pyplot.rcParams
找到了一個參數: legend.labelspacing
,我猜它被設置為字體大小的一小部分。 我已經改變了
pyplot.rcParams.update({'legend.labelspacing':0.25})
我不確定如何將它指定給 pyplot.legend 函數 - 傳遞
prop={'labelspacing':0.25}
要么
prop={'legend.labelspacing':0.25}
返回一個錯誤。
plot.legend(loc = '右下', decimal_places = 2, fontsize = '11', title = 'Hey there', title_fontsize = '20')
您可以減少圖例大小設置:
plt.legend(labelspacing=y, handletextpad=x,fontsize)
標簽間距是每個標簽之間的垂直空間。
handletextpad 是實際圖例和標簽之間的距離。
字體大小是不言自明的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.