mac系统matplotlib中文乱码
小于 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 # 用来正常显示负号