跳至主要內容

mac系统matplotlib中文乱码

pptg小于 1 分钟

用了8年的Mac了,之前时不时的接触到Python画图,遇到中文乱码的问题总是去Baidu。这次在这里记录一下解决方案。

网上的很多方案都是告诉我们去修改matplotlib的源代码,或者下载字体什么的。这里给一个新的思路,直接搜索可用的字体,然后选一个中文的就好了。

import matplotlib.font_manager as fm

# 常见中文字体
_CANDIDATE_FONTS = [
    'PingFang SC',
    'Heiti SC',
    'Hiragino Sans GB',
    'Songti SC',
    'STHeiti',
    'Noto Sans CJK SC',
    'Source Han Sans SC',
    'Microsoft YaHei',
    'SimHei',
    'WenQuanYi Micro Hei',
    'Arial Unicode MS',
]


# 从已注册的 TrueType 字体中查找可用字体名
available_names = {f.name for f in fm.fontManager.ttflist}
for name in _CANDIDATE_FONTS:
    if name in available_names:
        plt.rcParams['font.sans-serif'] = [name]
        print(name)
        break
        
# output: Hiragino Sans GB

当然这种方法适用于对字体要求不高的场景,需要严格要求字体的,还是乖乖的下载吧。最后把打印的字体设置进去就好了。

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['Hiragino Sans GB']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号