欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一次解决Matplotlib绘图中的中文乱码问题

程序员文章站 2022-03-21 14:22:49
...

一次解决Matplotlib绘图中的中文乱码问题

Matplotlib是一款非常常用的科学绘图工具,然而其对中文的支持不好。常见的解决办法分两类,一类是每次编程都指定字体,具体做法可以参考解决Matlplotlib中文乱码问题,它这里只介绍第二种方法,永久性的解决乱码问题。具体的解决步骤包括:
1. 查找Matplotlib的配置文件所在位置
2. 下载中文字体,并修改配置文件包含该中文字体
具体方法如下:
1. 利用下面代码查找Matplotlib的配置文件所在位置。

import matplotlib
matplotlib.matplotlib_fname()

如我的机器上得到了路径为:/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/
2. 下载中文字体,这里我下载的中文字体是微软雅黑字体 msyh.ttf,并将该字体放入这里/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/fonts/ttf(这里路径与上一步得到的结果有关)
3. 打开配置文件/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc,主要修改一下三行。

#font.family ... //这里将注释符号#删除
#font.sans-serif ... //这里将注释符号#删除,并添加自己需要添加的字体。比如我添加的字体是微软雅黑,则需要添加 Mircrosoft YaHei 
#axes.unicode_minus  : False

在我的电脑上,修改后的三行的结果为:

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

这里要划重点了:我现在的微软雅黑字体的文件名是msyh.ttf,但这里我在上述第二行添加的字体名却是Mircosoft YaHei,很多教程都没说明这一点,我当时就因为这走了不少弯路。

  1. 删除字符列表缓存,缓存的位置位于~/.cache/matplotlib,其中~指的是用户目录。