在Matplotlib中设置坐标轴标签字体大小的简洁方法

16

我正在寻找设置坐标轴标签及其字体大小的最简洁方法。

我知道可以这样做:

ax.set_xlabel('X axis', fontsize = 12)
ax.set_ylabel('Y axis', fontsize = 12)

我也知道可以使用这个命令来设置标签:

ax.set(xlabel = 'X axis', ylabel = 'Yaxis')

然而,如果我尝试:

ax.set(xlabel = 'X axis', ylabel = 'Yaxis', fontsize = 12)

我遇到了这个错误:

TypeError: There is no AxesSubplot property "fontsize"

我能否在 set 方法中指定字体大小? 我想尽可能地简洁整洁我的代码。


你不能在ax.set()中设置字体大小。你可以通过rcParams全局改变它,例如plt.rcParams['axes.labelsize'] = 12,但这会改变所有图表的默认行为。 - AChampion
2个回答

15
您可以更改“轴”的每个实例的标签。由“get_label”返回的文本实例提供了修改字体大小以及标签的其他属性的方法:
from matplotlib import pylab as plt
import numpy

fig = plt.figure()
ax = fig.add_subplot(111)
ax.grid()

# set labels and font size
ax.set_xlabel('X axis', fontsize = 12)
ax.set_ylabel('Y axis', fontsize = 12)

ax.plot(numpy.random.random(100))

# change font size for x axis
ax.xaxis.get_label().set_fontsize(20)

plt.show()

0

ax.xaxis.labelax.yaxis.label 也会返回一个 matplotlib.text.Text 对象,因此您可以调用 set()set_size() 来更改字体大小(您还可以使用前者更改位置)。

ax.xaxis.label.set_size(20)

一个可用的示例:
fig, ax = plt.subplots(figsize=(5,3))
ax.plot(range(10), range(10))
ax.set(xlabel='Time', ylabel='Value')
ax.xaxis.label.set(fontsize=20, position=(0.9, 0))
ax.yaxis.label.set(fontsize=15, position=(0, 0.9))

result


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接