再用Matplotlib绘图时,图中出现中文会乱码,是因为没有配置中文字体。
解决步骤如下
1 下载中文字体 SimHei.ttf, 网址是http://www.xiazaiziti.com/210356.html
2 安装SimHei字体
(1)查看matplotlib 配置文件位置
import matplotlib
print(matplotlib.matplotlib_fname())
![cddba78632d1bcb6028746386e6fc56f.png](https://img-blog.csdnimg.cn/img_convert/cddba78632d1bcb6028746386e6fc56f.png)
可以看出,作者的matplotlib在/root/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-dat/matplotlibrc
(2)将下载的字体文件SimHei.ttf放到 /root/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-dat/fonts/ttf/ 文件夹中。
(3)修改/root/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc文件,把下面的一行
#font.sans-serif:DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
修改为
font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
修改的地方就是去掉了 # ,在前面添加下载的字体 SimHei名称。
(4) axes.unicode_minus改为False,同时去掉注释符号
axes.unicode_minus : False
3 删除当前用户matplotlib 的缓冲文件
cd ~/.cache/matplotlib
rm -rf *.*
重启 Anaconda或机器。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.family']='sans-serif'
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
x = np.linspace(-8, 8, 1024)
y1 = 0.618 * np.abs(x) - 0.8 * np.sqrt(64 - x ** 2)
plt.plot(x, y1, color='r')
plt.title("解决中文乱码问题")
plt.show()
![fcc26993058a596ea26fd963bec7bf9e.png](https://img-blog.csdnimg.cn/img_convert/fcc26993058a596ea26fd963bec7bf9e.png)
参考
解决matplotlib不能显示中文的问题(Ubuntu)
https://blog.csdn.net/u012891055/article/details/82288251
https://blog.csdn.net/weixin_39599711/article/details/78813736