Python 绘图中文乱码解决方法(详细)
date: 09/15/2021
name: yin_n
tag: python
Step1:下载中文字体SimHei
在windows下可以直接找自己电脑里的simhei.ttf
或者在这下载:
Step2:将simhei.ttf复制到当前环境下的字体文件夹
Q:如何找到当前环境的字体文件夹?
在当前工程新建一个python文件,输入:
import matplotlib
print(matplotlib.matplotlib_fname())
并运行,就可以看到打印结果了:
打开mpl-data文件夹,会看到有一个fonts文件夹:
把simhei.ttf复制到这个文件夹,双击simhei.ttf,然后选择install,安装即可。
Step3:修改matplotlibrc文件
就是刚刚那个mpl-data文件夹下的matplotlibrc文件,用记事本打开后:
- 去掉font.family的注释符号#,如下图:
- 去掉font.sans-serif的注释符号#,并添加中文字体SimHei(注意大小写),如下图:
- 去掉axes.unicode_minus的注释,并将值True改为False,如下图:
完成后保存即可。
Step4:删除缓冲目录(很重要!)
Q:如何找到缓冲目录?
在当前工程运行:
import matplotlib
print(matplotlib.get_cachedir())
即可找到,如下图:
然后,在Terminal执行命令 rm C:\Users...(刚刚找到的那个缓冲目录),提示输入Y删除即可。
Step5:在代码里绘图的地方添加字体
#上面是其他代码
plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False
#下面是你绘图的代码
Step6:大功告成,测试一下吧
import numpy as np
import matplotlib.pyplot as plt
x = [0.02,2.02,3.98,6.06,8.11,10.14]
x = np.array(x)
num = [0,2,4,6,8,10]
y = np.array(num)
f1 = np.polyfit(x, y, 1)
p1 = np.poly1d(f1)
plt.rcParams['font.sans-serif'] = ['simhei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot(x, y, 's',label='original values')
yvals = p1(x)
plt.plot(x, yvals, 'r',label='polyfit values')
plt.xlabel('I(mA)')
plt.ylabel('U(V)')
plt.title(u'线性电阻伏安特性曲线')
plt.show()
如果可以看到下图就搞定了:
没有的话,仔细检查下上面的步骤有没有都搞定吧。
参考教程:
Thx.
编辑于 2021-09-15 21:33