在Matplotlib中设置刻度标签的字体属性

9 投票
2 回答
15511 浏览
提问于 2025-04-17 00:54

我正在尝试用matplotlib把刻度标签的字体从默认字体改成Times New Roman。我本以为这和设置标题和坐标轴标签的字体一样简单,但实际上有点棘手。目前,我只想设置x轴刻度标签的字体,这些标签是日期,自动格式化的(这可能是我遇到问题的原因之一,但我不太确定)。

当我运行下面相关的代码片段时,出现了“Axessubplot没有'set_fontproperties'这个属性”的错误。

ticks_font = matplotlib.font_manager.FontProperties(family='times new roman', style='normal', size=12, weight='normal', stretch='normal')

fig.autofmt_xdate()
ax.fmt_xdata = mdates.DateFormatter('%Y-%m-%d')
for label in ax.get_xticklabels():
    ax.set_fontproperties(ticks_font)

任何帮助都非常感谢。

谢谢。

更新/编辑:啊,我觉得自己真傻。刚刚搞明白了,等我意识到这一点时,感觉太明显了。在上面的代码片段中,答案是:

label.set_fontproperties(ticks_font)

2 个回答

1

http://matplotlib.sourceforge.net/users/customizing.html

自定义matplotlib:matplotlib使用一种叫做matplotlibrc的配置文件来调整各种属性,我们称这些为rc设置或rc参数。你可以控制几乎所有属性的默认值,比如图形的大小和分辨率、线条的宽度、颜色和样式、坐标轴、网格属性、文本和字体属性等等。

11

你也可以在运行命令之前,给它设置一个参数列表,如果你是在运行一个脚本的话。比如下面这个是我脚本中的一部分:

fig_size = [fig_width, fig_height] 
tick_size = 9
fontlabel_size = 10.5
params = {
    'backend': 'wxAgg',
    'lines.markersize' : 2,
    'axes.labelsize': fontlabel_size,
    'text.fontsize': fontlabel_size,
    'legend.fontsize': fontlabel_size,
    'xtick.labelsize': tick_size,
    'ytick.labelsize': tick_size,
    'text.usetex': True,
    'figure.figsize': fig_size
}
plt.rcParams.update(params)

或者如果你想像之前那样做,就运行:

for label in ax.get_xticklabels() :
    label.set_fontproperties(ticks_font)

这个过程是在获取每一个标签,这些标签都有你可以设置的所有文本属性。

撰写回答