(Python 3)关于matplotlib显示中文

前言

遇到了一个挺头疼的问题,就是关于matplotlib绘制出来的图怎么显示中文。默认情况下,比如下面这句

plt.title('2019-nCoV疫情曲线', fontsize=20)

显示出来的标题带有方框,识别不出中文(如图)。找了挺久,试了几种方法,现在终于可以了。
在这里插入图片描述

环境

  • ubuntu16.04
  • pycharm
  • python3
  • matplotlib

过程

很多文章都说要加上下面这句,加了之后一般没效果。原因在于里面的字体库没有所提到的SimHei字体。

#解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

解决方法自然是先要找出matplotlib的字体放在哪,然后去下相应的字体,再把字体放进去。以下操作是在pycharm 中进行的。

  • 进到python console(pycharm 底下有,不然找个终端输入python进入),输入以下代码即可查看字体路径,比如我的是
    /home/xxx/PycharmProjects/Wuhan/venv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
import matplotlib    
print(matplotlib.matplotlib_fname())
  • 之后去下载SimHei字体
    字体链接

  • 下载完成之后将其放到/home/xxx/PycharmProjects/Wuhan/venv/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf下面

在这里插入图片描述

这个时候可以做个测试,发现依然是显示不了汉字。

  • 之后在home目录下,执行 ctrl + h ,打开隐藏目录, 删除 ~/.cache/matplotlib的缓冲目录
sudo rm -r ~/.cache/matplotlib
  • 接下来要修改matplotlibrc文件,文件位置如图

在这里插入图片描述

双击打开文件,ctrl+f 搜索相应的关键字快速定位。需要修改的部分如下(注意保存):

在这里插入图片描述
在这里插入图片描述
图中代码:

    font.family         : sans-serif        
    font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif 
    axes.unicode_minus,将True改为False,作用就是解决负号'-'显示为方块的问题   

改完之后也就不需要.py文件里的这两行代码了,可以注释掉或者删掉

# plt.rcParams['font.sans-serif']=['SimHei']
# plt.rcParams['axes.unicode_minus'] = False
  • 效果

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章