关于python:如何在Matplotlib中设置图标题和轴标签字体大小?

How do I set the figure title and axes labels font size in Matplotlib?

我在Matplotlib中创建一个图形,如下所示:

1
2
3
4
5
6
7
8
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不是我想要的。如何分别设置图形标题和轴标签的字体大小?


处理文本(如labeltitle等)的函数接受与matplotlib.text.text相同的参数。对于字体大小,可以使用size/fontsize

1
2
3
4
5
6
7
8
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。(从页面上):

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

(据我所见,没有办法分别设置xy标签大小。)

我看到axes.titlesize不影响suptitle。我想,你需要手动设置。


您还可以通过rcparams字典全局执行此操作:

1
2
3
4
5
6
7
8
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)


如果您更习惯使用ax对象进行绘图,您可能会发现ax.xaxis.label.set_size()更容易记忆,或者至少更容易在ipython终端中找到using tab。之后似乎需要重新绘制操作才能看到效果。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import matplotlib.pyplot as plt

# set up a plot with dummy data
fig, ax = plt.subplots()
x = [0, 1, 2]
y = [0, 3, 9]
ax.plot(x,y)

# title and labels, setting initial sizes
fig.suptitle('test title', fontsize=12)
ax.set_xlabel('xlabel', fontsize=10)
ax.set_ylabel('ylabel', fontsize='medium')   # relative to plt.rcParams['font.size']

# setting label sizes after creation
ax.xaxis.label.set_size(20)
plt.draw()

我不知道在SUPPITLE创建后如何设置SUPPITLE大小。


为了只修改标题的字体(而不是轴的字体),我使用了以下方法:

1
2
3
4
import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.set_title('My Title', fontdict={'fontsize': 8, 'fontweight': 'medium'})

fontdict,matplotlib.text.text中的所有Kwarg除外。