小积累—CentOS 7解决Matplotlib绘图中文乱码

问题

    最近在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

推荐阅读更多精彩内容