Matplotlib自定义字体设置:已改轴标签,如何修改轴刻度数字字体
坐标轴刻度自定义字体配置方法
复用你已经定义好的自定义字体实例prop即可实现刻度数字的字体修改,不需要重复加载字体文件。以下是和你现有代码适配度最高的实现方案,以及几种可选的扩展写法:
- 最小改动方案(直接在你现有代码末尾追加2行配置即可)
Matplotlib原生的plt.xticks()/plt.yticks()接口支持直接传入字体属性参数,和你之前设置轴标签字体的逻辑完全一致,不需要额外修改绘图逻辑:
# 给x轴所有刻度数字应用自定义字体 plt.xticks(fontproperties=prop, size=12) # 给y轴所有刻度数字应用自定义字体 plt.yticks(fontproperties=prop, size=12)
- 版本兼容方案(适配所有Matplotlib版本,适合多子图场景)
如果遇到旧版本Matplotlib下ticks接口传参不生效的问题,可以显式获取当前坐标轴的所有刻度文本对象,逐个绑定字体属性,兼容性更强:
# 获取当前激活的坐标轴对象 ax = plt.gca() # 遍历x、y轴的所有刻度文本,统一应用字体 for tick_label in ax.get_xticklabels() + ax.get_yticklabels(): tick_label.set_fontproperties(prop) tick_label.set_size(12)
- 全局配置方案(全图统一字体时效率最高)
如果需要让图中所有文本元素(刻度、标签、标题、图例)都使用这款自定义字体,可以在加载字体后修改全局绘图参数,不需要后续每个文本元素单独传字体参数:
# 将自定义字体注册到Matplotlib全局字体列表 plt.rcParams['font.family'] = prop.get_name() # 解决全局改字体后负号显示为方块的常见问题 plt.rcParams['axes.unicode_minus'] = False
注意:使用全局rcParams配置时,相关代码需要放在所有绘图操作之前执行,否则已经渲染生成的文本元素不会自动应用新字体。
适配原有代码的完整可运行示例
import matplotlib.pyplot as plt import matplotlib.font_manager as fm import seaborn as sns # 加载本地自定义字体 prop = fm.FontProperties(fname='/Users/NAME/Downloads/GARA.ttf') # 绘制折线图 sns.lineplot(x=stlr_df['Number of Steps'], y=stlr_df['Learning Rate'], color='purple') # 设置轴标签字体 plt.xlabel('Number of Steps', fontproperties=prop, size=14) plt.ylabel('Learning Rate', fontproperties=prop, size=14) # 配置坐标轴刻度数字的字体 plt.xticks(fontproperties=prop, size=12) plt.yticks(fontproperties=prop, size=12) # 渲染显示 plt.show()
内容的提问来源于stack exchange,提问作者Synikk
相关产品推荐
相关产品推荐

