Matplotlib无法渲染中文字符问题求助(Mac环境)
Matplotlib中文显示方框的解决方法(Mac OS Sonoma环境)
针对你在Mac OS Sonoma、Python 3.12、Matplotlib 3.8.4环境下遇到的中文显示为方框问题,以下是可行的解决方案:
一、临时指定字体(单次脚本生效)
直接在代码中配置Matplotlib使用Mac系统自带的中文字体(如苹方、思源黑体):
方法1:通过字体路径指定
import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # 加载Mac自带的苹方字体 font = FontProperties(fname='/System/Library/Fonts/PingFang.ttc', size=12) plt.title("例子", fontproperties=font) plt.plot([1,2,3], [4,5,6], label="例子") plt.legend(prop=font) # 图例需单独设置字体 plt.show()
方法2:通过字体名称指定
先确认系统中Matplotlib能识别的中文字体名称,执行以下代码查看:
import matplotlib.font_manager as fm for font in fm.fontManager.ttflist: if 'PingFang' in font.name or 'Source Han' in font.name: print(font.name)
找到名称后,在脚本开头配置:
import matplotlib.pyplot as plt # 设置默认中文字体,替换为你查到的字体名称 plt.rcParams['font.sans-serif'] = ['PingFang SC'] plt.rcParams['axes.unicode_minus'] = False # 解决负号显示为方块的问题 plt.title("例子") plt.plot([1,2,3], [4,5,6], label="例子") plt.legend() plt.show()
二、永久配置(所有脚本生效)
如果不想每次写代码都配置,可修改Matplotlib全局配置:
- 找到配置文件目录:
import matplotlib print(matplotlib.get_configdir())
- 在该目录下创建或编辑
matplotlibrc文件,添加以下内容:
font.sans-serif: PingFang SC, Source Han Sans SC, SimHei axes.unicode_minus: False
保存后,所有Matplotlib脚本都会默认使用中文字体。
为什么你之前的方法无效?
# -*- coding:utf8 -*-仅用于指定Python文件编码,和Matplotlib的字体渲染无关- pyplotz库对新版本Python/Matplotlib兼容性较差,已不再维护
- Python 3默认字符串就是Unicode格式,添加
u前缀没有实际作用
内容的提问来源于stack exchange,提问作者backtosq1
相关产品推荐
相关产品推荐

