pycharm中用matplotlib.pyplot做图无法显示中文(笔者断断续续搜了两个星期才找到问题)

说明

本文是参考了很多人的博客来写的,不好引用,如果觉得侵权了,联系删除好了(没必要,我觉得我写的最全),可能是版本原因,他们的简单方法无法解决。下面我直接说做法好了

先用下面测试代码跑一下

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
import numpy as np
a=np.arange(9)
b=np.sin(a)
plt.plot(a,b)
plt.title('哈罗')
plt.show()

发现还是框框,不是中文,哈哈哈,这段不管了,往下操作

环境

python-3.7
ubuntu18.04版本
matplotlib是直接在pycharm安装的

1.下载 SimHei.ttf 文件

https://github.com/stellarCN/scp_zh/blob/master/fonts/SimHei.ttf
直接download下载,可以在自己的下载文件夹中找到

2.将上面文件移动到(这是我的路径)

/home/smj/anaconda3/envs/TF1/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf
的文件下面,顺便打开看一下,你就会发现很多字体了
不知道这个路径在哪,可以用下面代码:

import matplotlib
print(matplotlib.matplotlib_fname())

3.打开home这个主目录,按ctrl+h 打开隐藏文件,删除 ~/.cache/matplotlib这个缓存目录,windows下的这个缓存目录位置可能有点区别,我没研究,自己注意哈

4.打开第2点那个代码显示的路径,即matplotlibrc这个文件夹,在256、264、404行修改这三个(可能错开一行,因为我自己重新下载操作写本文的时候就错开行了,我都懵了对应下面内容去改就行)

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

改为:(下面改的内容不要直接复制哈,结尾是每行的修改内容)

font.family: sans-serif (去掉#)
font.sans-serif: SimHei ,DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif (去掉#,,加上SimHei 加个英文的 逗号)
axes.unicode_minus: False (去掉#,True改为False)

5.通用的方法

在代码中加入下面的

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

你的代码就能显示中文了
那现在用的代码再试一下

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
import numpy as np
a=np.arange(9)
b=np.sin(a)
plt.plot(a,b)
plt.title('哈罗')
plt.show()

如果还是没解决,直接评论,我帮你解决!(window系统除外哈,应该大差不差)

你可能感兴趣的:(python)