本文共 1613 字,大约阅读时间需要 5 分钟。
因为很多软件包都对中文不友好,所以想要使用中文,需要进行适当的调节。
在解决问题之前,我先说一下我的系统:Centos系统
>>import matplotlib >>print(matplotlib.matplotlib_fname())
该代码返回matplotlib的文件配置文件:matplotlibrc 的地址,比如返回
该地址其实使用 vi +地址打开后是一系列的注释配置文档,我们得到这个地址可以先不修改配置文件,直接进行下一步,此步就是为我们指明matplotlib加载文件的时候是在什么位置。但是因为matplotlib中没有对应的中文字体文件,所以我们需要上传中文字体到对应的文件下,就是第二步。中文字体到哪里找?这里给个链接:
链接进去后: 我直接使用的那个支持中文的字体,链接点进去就可以直接下载,是黑体(simhei.ttf)的 ttf 压缩包,下载后直接解压就行。完成字体的下载后,就可以直接通过windows / Linux 系统的文件传输软件进行传输到 /usr/local/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/ 这个目录下,不同的安装路径可能前缀/usr/local/lib/python3.6/ 不一样,但是就是在那个文件夹下,不要传错了。
上个图例:
<1> 查找并删除font.family和font.sans-serif两行前的#<2> 并在font.sans-serif后添加中文字体SimHei, …(其余不变)<3> axes.unicode_minus : False;使其值为False;否则无法显示负号
在修改配置文件后,其实最好还是在代码中体现下,如下:
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['font.family']='sans-serif' plt.rcParams['axes.unicode_minus'] = False
异常信息如下:
UserWarning: findfont: Font family [u’sans-serif’] not found. Falling back to DejaVu Sans (prop.get_family(), self.defaultFamily[fontext]))
这里牵扯到 matplotlib 里面的一个py文件 python3.6/site-packages/matplotlib/font_manager.py 我给出了这个文件的大致路径,由于以上错误是说,因为找不到对应的Font Famliy 然后直接换为了默认的文件,所以这里,我们按照这个思路,可以修改这个py文件的内容。具体修改操作是:打开文件后,直接找 self.defaultFamily,进行修改为我们的 SimHei 文件,注意那个 afm 要保留,他是另一种字体文件。
修改完这个后,会发现下面有一个self.defaultFont 操作这两步,保存就行。然后就可以尝试一下显示中文的函数了。
【以上是我的解决过程,有问题欢迎指正!】
转载地址:http://xcusn.baihongyu.com/