Python matplotlib 画图中文显示方框怎么修复? Python matplotlib 画图中文显示方框怎么修复问题分析在 Python 里用 matplotlib 画图时中文标题或坐标轴标签显示成方框□□□通常是因为默认字体如 DejaVu Sans不包含中文字形。课程作业、实验报告、数据可视化项目里都很常见。本质就一件事让 matplotlib 使用你系统里已有的中文字体并顺手处理负号显示。建议优先试方法一改两行rcParams即可只有系统里确实没有中文字体时再用方法二下载开源字体。排查步骤1.确认系统是否有中文字体- Windows看C:/Windows/Fonts/是否有simhei.ttf黑体或msyh.ttc微软雅黑- macOS看/System/Library/Fonts/或/Library/Fonts/- Linux运行fc-list :langzh查看已安装的中文字体2.确认 matplotlib 能否识别该字体import matplotlib.font_manager as fm fonts [f.name for f in fm.fontManager.ttflist if SimHei in f.name or Microsoft YaHei in f.name] print(fonts)若输出为空说明当前环境字体列表里没有这些字体需要安装字体或走方法二。3.检查代码是否同时设置了字体和负号只写font.sans-serif而不写axes.unicode_minus False中文可能正常但负号仍显示异常。示例代码方法一使用系统自带字体Windows / macOS 优先试这个import matplotlib.pyplot as plt # Windows 常用 SimHei 或 Microsoft YaHei plt.rcParams[font.sans-serif] [SimHei] # 或 [Microsoft YaHei] plt.rcParams[axes.unicode_minus] False # 负号正常显示 x [1, 2, 3, 4] y [10, 20, 15, 25] plt.plot(x, y, markero) plt.title(中文标题测试) plt.xlabel(横轴单位) plt.ylabel(纵轴数值) plt.show()方法二安装开源中文字体Linux 或系统无中文字体时思源黑体免费开源。下载后注册到 matplotlibimport matplotlib.pyplot as plt import matplotlib.font_manager as fm import urllib.request import os font_url ( https://github.com/adobe-fonts/source-han-sans/raw/release/OTF/ SimplifiedChinese/SourceHanSansSC-Regular.otf ) font_path SourceHanSansSC-Regular.otf if not os.path.exists(font_path): urllib.request.urlretrieve(font_url, font_path) fm.fontManager.addfont(font_path) font_prop fm.FontProperties(fnamefont_path) plt.rcParams[font.family] font_prop.get_name() plt.rcParams[axes.unicode_minus] False plt.plot([1, 2, 3], [4, 5, 6]) plt.title(中文标题, fontpropertiesfont_prop) plt.xlabel(横轴, fontpropertiesfont_prop) plt.ylabel(纵轴, fontpropertiesfont_prop) plt.show()若 GitHub 下载慢可手动下载字体文件放到脚本同目录再运行上面代码。运行说明1.环境Python 3.6pip install matplotlib2.改完字体仍显示方框清除 matplotlib 字体缓存后重启 Pythonimport matplotlib print(matplotlib.get_cachedir()) # 删除该目录下 fontlist-*.json再重新运行绘图代码3.验证图表标题、坐标轴中文应正常显示不再是方框。常见坑1.字体名写错- 正确SimHei、Microsoft YaHei- 错误simhei大小写敏感、直接写宋体应使用字体注册名2.未清缓存修改rcParams后仍用旧缓存。删~/.matplotlib/fontlist-*.json并重启解释器。3.Linux 缺字体sudo apt-get install fonts-wqy-zenheiplt.rcParams[font.sans-serif] [WenQuanYi Zen Hei] plt.rcParams[axes.unicode_minus] False4.Jupyter Notebook 不生效先执行%matplotlib inline import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False5.负号变方块补上plt.rcParams[axes.unicode_minus] False。按上面步骤仍显示方框可以把操作系统、matplotlib 版本、完整报错或截图发评论区我帮你看。