说明
本文是参考了很多人的博客来写的,不好引用,如果觉得侵权了,联系删除好了(没必要,我觉得我写的最全),可能是版本原因,他们的简单方法无法解决。下面我直接说做法好了
先用下面测试代码跑一下
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系统除外哈,应该大差不差)
本文详细介绍如何在Ubuntu系统上配置Matplotlib以正确显示中文标签和标题,包括SimHei字体的安装、matplotlib配置文件的修改及缓存清理等步骤。





