一次解决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
,很多教程都没说明这一点,我当时就因为这走了不少弯路。
- 删除字符列表缓存,缓存的位置位于
~/.cache/matplotlib
,其中~
指的是用户目录。