如何在Python Matplotlib图表中将字体改为Arial Narrow?附报错求助
解决Matplotlib设置Arial Narrow字体报错的方案
我之前在Windows环境下折腾Matplotlib字体时也踩过类似的坑,尤其是Arial Narrow这种不是系统默认预装的字体,给你几个针对性的排查和解决步骤,应该能搞定:
先确认字体是否真的安装在系统里
打开Windows 7的控制面板→字体,搜索「Arial Narrow」,如果搜不到,说明你的系统里压根没装这个字体。可以从Office安装包提取对应的字体文件(一般是ARIALN.TTF),或者找靠谱的来源下载安装,安装完成后再继续下一步。强制刷新Matplotlib的字体缓存
Matplotlib会把系统里的字体缓存起来,新装的字体不会自动被识别。你可以这么操作:- 在Spyder里运行这段代码找到缓存目录:
import matplotlib print(matplotlib.get_cachedir()) - 关闭Spyder,找到这个目录下的
fontlist-v300.json(不同Matplotlib版本文件名可能略有差异,比如v200),直接删除它。 - 重启Spyder,Matplotlib会重新扫描系统字体并生成新的缓存。
- 在Spyder里运行这段代码找到缓存目录:
代码里的正确设置方式
很多人踩坑是因为字体名称写错或者参数用错,Windows下Arial Narrow的正确名称是'Arial Narrow'(注意空格和大小写)。给你两种可靠的设置方式:- 全局设置(所有文本都生效):
import matplotlib.pyplot as plt # 全局配置字体 plt.rcParams['font.family'] = 'Arial Narrow' # 如果需要设置字体大小,也可以一起配置 plt.rcParams['font.size'] = 12 # 测试图表 plt.plot([1,2,3], [4,5,6]) plt.title('测试标题') plt.xlabel('X轴标签') plt.ylabel('Y轴标签') plt.xticks() plt.yticks() plt.show() - 单独指定字体(适合局部文本调整):
要是全局设置没生效,还可以直接指定字体文件路径:import matplotlib.pyplot as plt import matplotlib.font_manager as fm # Windows下Arial Narrow的默认路径,要是你的路径不一样就改成自己的 font_path = 'C:/Windows/Fonts/ARIALN.TTF' arial_narrow = fm.FontProperties(fname=font_path) plt.plot([1,2,3], [4,5,6]) plt.title('测试标题', fontproperties=arial_narrow) plt.xlabel('X轴标签', fontproperties=arial_narrow) plt.ylabel('Y轴标签', fontproperties=arial_narrow) plt.xticks(fontproperties=arial_narrow) plt.yticks(fontproperties=arial_narrow) plt.show()
- 全局设置(所有文本都生效):
排查报错细节
如果还是报错,先看清楚错误信息:- 如果是「找不到字体」相关的错误,回到前两步检查字体安装和缓存刷新;
- 如果是参数错误,比如
AttributeError,检查代码里的参数名是不是写错了(比如把fontfamily写成font-family,或者fontproperties拼错)。
内容的提问来源于stack exchange,提问作者Gergő Barta
相关产品推荐
相关产品推荐

