问题
最近在CentOS 7使用python绘制报表,输出后发现图形中文乱码,解决方法很简单。
查看操作系统是否含有字体库
上图可知,系统中不包含字体库,中文字体自然也就不存在了,那么接下来我们应该做的就是安装字体库及中文字体。
安装字体库
1. yum -y install fontconfig
当看到下图所示,即已安装成功
2. cd /user/share/
下载完成后,进入如上目录下,可以看到fonts及fontconfig目录(此目录之前是不存在的)。
好了,字体库已安装,接下来就要添加中文字体了。
添加中文字体
CentOS中字体粗存储在上图所示的fonts目录,我们需要做的就是下载中文字库存放到该文件夹下,至于中文字体来源,可以从其他机器copy,也可以直接在网上下载,我是从windows机器直接下载的所需中文字体。
1. 字体下载
在C:\Windows\Fonts目录下找到所需字体,copy出来,然后上传到目标服务器。
以黑体及宋体为例:
2. 字体上传
在fonts目录下新建文件夹,将字体移入后修改文件夹权限:
mkdir chinese
mv simhei.ttf chinese/
chmod -R 755 /usr/share/fonts/chinese
可安装辅助工具搜索目录中所有字体信息,并汇总生成fonts.scale文件
yum -y install ttmkfdir
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
3. 修改字体配置文件
vim /etc/fonts/fonts.conf
配置文件中增加我们的chinese目录
保存退出后,一定要记得刷新字体缓存,执行:fc-cache
4. 通过fc-list看一下字体列表
到这,字体库安装完成。
对部分小伙伴来说到这就结束了,但是还会有部分小伙伴没能解决乱码问题,这是因为matplotlib字体文件夹中不包含中文字体,我们继续修改matplotlib配置文件。
matplotlib新增中文字体
1. 将下载的字体复制一份放到matplotlib文件夹
/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/fonts/ttf/
2. 修改matplotlib配置文件
vim /usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc
<1> 查找并删除font.family和font.sans-serif两行前的#
<2> 并在font.sans-serif后添加中文字体Microsoft YaHei, …(其余不变)
<3> axes.unicode_minus : False;使其值为False;否则无法显示负号
3. 删除.matplotlib/cache里面的两个缓存字体文件
4. 重启python
转载:https://blog.csdn.net/wlwlwlwl015/article/details/51482065