运行环境mac
发现使用matplotlib等相关绘图包时中文会出现方块,无法显示,试了网上各种方法都不行。。后来发现其实是本地库根本就没有中文字体包,这样的话怎么修改代码都是没用的。。。卒
首先查看是否有相关中文字体包
from matplotlib.font_manager import FontManager
import subprocessmpl_fonts = set(f.name for f in FontManager().ttflist)print('all font list get from matplotlib.font_manager:')
for f in sorted(mpl_fonts):print('\t' + f)
然后发现
根本一个中文字体包都没有。。如果你发现你有类似SimHei,FangSong等字体,那恭喜你可以不用看本文了。
首先下载一个中文字体,比如选择SimHei,黑体。
然后将它放置到字体路径下: python3.7/site-packages/matplotlib/mpl-data/fonts/ttf (大概是长这样)
如果你不知道路径在哪儿,在命令行里输入
python -c "import matplotlib; print(matplotlib.matplotlib_fname())"
可获取matplotlib的相关路径,然后接着进去mpl-data/fonts/ttf 即可。
讲下载好的字体放在这里,如果不知道怎么复制到这里 可以 cp 字体所在路径 . 将字体复制到当前位置。(记得加.)
ls查看一下,发现simhei字体已经复制到这里。
紧接着在代码开头放入:
import matplotlib as mpl
mpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.family'] = 'SimHei'from matplotlib.font_manager import _rebuild
_rebuild()
一定要记住这个rebuild,因为需要重新加载字体库才能检测到新导入的字体(类似关机重启)。
接下来就代码中就有能显示中文了。