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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值