簡體   English   中英

如何使用 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 的回答。

除了以為單位的大小外,還有一些命名的fontsizes

xx-small
x-small
small
medium
large
x-large
xx-large

用法:

pyplot.legend(loc=2, fontsize = 'x-small')

有多種設置可用於調整圖例大小。 我覺得最有用的兩個是:

  • 標簽間距:以字體大小的倍數設置標簽條目之間的間距。 例如,對於 10 legend(..., labelspacing=0.2)字體, legend(..., labelspacing=0.2)會將條目之間的間距減少到 2 legend(..., labelspacing=0.2) 我安裝的默認值約為 0.5。
  • prop:允許完全控制字體大小等。您可以使用legend(..., prop={'size':8})設置8 磅字體。 我安裝的默認值大約是 14 點。

此外, 圖例的文檔列出了許多其他填充和間距參數,包括: borderpadhandlelengthhandletextpadborderaxespad ,和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.

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