Linux环境matplotlib输出图片中的中文字体显示问题解决

实验楼Python 个人项目中数据分析前端展示的一个方案是前端请求时后端利用matplotlib动态生成所需要的图片返回给前端, matplotlib默认不支持中文字体显示,所以在遇到中文时无法显示。
导入中文字体文件就可以解决这个问题。首先定位matplotlib的资源文件路径,通过如下语句

import matplotlib
print(matplotlib.matplotlib_fname())

输出结果

/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc

这个是matplotlib加载的资源文件,字体文件存放在/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/fonts/ttf路径下,可以去这个地方下载字体(https://github.com/dolbydu/font),例如微团雅黑-Microsoft Yahei.ttf,黑体-SimHei.ttf, 楷体-STKaiti.TTF等,将下载的字体文件存放到ttf路径下
然后修改matplotlibrc文件,搜索font.family

 font.family         : sans-serif

这行的注释去掉

font.sans-serif     :STKaiti, SimHei, Microsoft YaHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

这行的注释去掉,并在后面值的前面增加添加的中文字体文件,现在matplotlib默认的sans-serif font-family会优先选用楷体显示字体,这样就可以显示中文

最后需要删除matplotlib的生成的缓存文件

rm -rf ~/.cache/matplotlib

这样就可以进行中文字体的显示了。

你可能感兴趣的:(Python,Matplotlib)