如何更改matplotlib图中的字体大小

912 投票
16 回答
2107212 浏览
提问于 2025-04-16 05:16

怎么才能改变matplotlib图表上所有元素(刻度、标签、标题)的字体大小呢?

我知道怎么改变刻度标签的大小,可以用下面的代码:

import matplotlib 
matplotlib.rc('xtick', labelsize=20) 
matplotlib.rc('ytick', labelsize=20) 

但是其他的部分该怎么改变呢?

16 个回答

270

如果你想要改变已经创建好的某个图表的字体大小,可以试试这个方法:

import matplotlib.pyplot as plt

ax = plt.subplot(111, xlabel='x', ylabel='y', title='title')
for item in ([ax.title, ax.xaxis.label, ax.yaxis.label] +
             ax.get_xticklabels() + ax.get_yticklabels()):
    item.set_fontsize(20)
622

如果你像我一样喜欢控制一切,你可能会想要明确设置所有的字体大小:

import matplotlib.pyplot as plt

SMALL_SIZE = 8
MEDIUM_SIZE = 10
BIGGER_SIZE = 12

plt.rc('font', size=SMALL_SIZE)          # controls default text sizes
plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title
plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels
plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('legend', fontsize=SMALL_SIZE)    # legend fontsize
plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title

注意,你也可以通过在 matplotlib 上调用 rc 方法来设置字体大小:

import matplotlib

SMALL_SIZE = 8
matplotlib.rc('font', size=SMALL_SIZE)
matplotlib.rc('axes', titlesize=SMALL_SIZE)

# and so on ...
1131

来自 matplotlib 文档

font = {'family' : 'normal',
        'weight' : 'bold',
        'size'   : 22}

matplotlib.rc('font', **font)

这段代码会把所有项目的字体设置为 kwargs 对象中指定的字体,也就是 font

另外,你也可以使用 rcParamsupdate 方法,正如在 这个回答 中提到的那样:

matplotlib.rcParams.update({'font.size': 22})

或者

import matplotlib.pyplot as plt
plt.rcParams.update({'font.size': 22})

你可以在 自定义 matplotlib 页面 找到所有可用属性的完整列表。

撰写回答