在Matplotlib中设置刻度标签的字体属性
我正在尝试用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)
这个过程是在获取每一个标签,这些标签都有你可以设置的所有文本属性。