2012-09-16 164 views
259

我創造了一個Matplotlib圖所示:如何在Matplotlib中設置圖形標題和軸標籤字體大小?

from matplotlib import pyplot as plt 

fig = plt.figure() 
plt.plot(data) 
fig.suptitle('test title') 
plt.xlabel('xlabel') 
plt.ylabel('ylabel') 
fig.savefig('test.jpg') 

我想爲圖標題和軸標籤中指定的字體大小。我需要三種不同的字體大小,因此設置全局字體大小(mpl.rcParams['font.size']=x)並不是我想要的。如何分別設置圖形標題和軸標籤的字體大小?

+0

我很好奇,所以我試着添加你的'mpl.rcParams ['font.size'] = 20'並嘗試將值改爲10和14.首先我發現我得到了錯誤,除非我將'mpl'改爲'plt '。這個改變清除了錯誤,但是這行代碼對我的標題或標籤沒有影響。當然,這個語法是正確的? – TMWP

+0

現在我從接受的答案的評論中思考問題可能是我的導入聲明,但是如果我沒有導入命令,爲什麼它不會拋出錯誤超出了我的意思。在測試'mpl'命令時是否有另一個導入行? – TMWP

回答

400

處理諸如label,title等文本的函數接受與matplotlib.text.Text相同的參數。字體大小,您可以使用size/fontsize

from matplotlib import pyplot as plt  

fig = plt.figure() 
plt.plot(data) 
fig.suptitle('test title', fontsize=20) 
plt.xlabel('xlabel', fontsize=18) 
plt.ylabel('ylabel', fontsize=16) 
fig.savefig('test.jpg') 

對於全球範圍內設置titlelabel大小,mpl.rcParams包含axes.titlesizeaxes.labelsize。 (從頁面):

axes.titlesize  : large # fontsize of the axes title 
axes.labelsize  : medium # fontsize of the x any y labels 

(據我所看到的,是沒有辦法單獨設置xy標籤尺寸。)

而且我看到axes.titlesize不影響suptitle。我想,你需要手動設置。

+0

謝謝!有沒有一種方法可以在全局範圍內設置,但明確地爲(suptitle,xlabel,ylabel)設置?我製作了很多圖表,只是想指定一次... – vasek1

+0

@ vasek1:我以爲你不想全局設置:)。爲此你需要'mpl.rcParams'。我編輯了我的答案。 – Avaris

+8

對於像我這樣的其他人尋找更改標題大小的解決方案:'plt.rcParams.update({'axes.titlesize':'small'})' –

30

您也可以通過rcParams字典做全球:

import matplotlib.pylab as pylab 
params = {'legend.fontsize': 'x-large', 
      'figure.figsize': (15, 5), 
     'axes.labelsize': 'x-large', 
     'axes.titlesize':'x-large', 
     'xtick.labelsize':'x-large', 
     'ytick.labelsize':'x-large'} 
pylab.rcParams.update(params) 
+0

除了''x-large''外還有其他尺寸的東西嗎? –

+2

'xx-small','x-small','small','medium','large','x-large','xx-large'。請參閱https://matplotlib.org/api/font_manager_api.html#matplotlib.font_manager.FontProperties.set_size – tsando

9

如果您更習慣於使用ax對象做你的繪圖,您可能會發現ax.xaxis.label.set_size()更容易記住,或者至少更容易在ipython終端中查找使用標籤。看到效果後,似乎需要重繪操作。例如:

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
x = [0,1,2] 
y = [0, 3, 9] 
ax.plot(x,y) 
fig.suptitle('test title') 
ax.set_xlabel('xlabel') 
ax.set_ylabel('ylabel') 
ax.xaxis.label.set_size(20) 
plt.draw() 

我不知道類似的方式來設置suptitle的大小。

相關問題