用matplotlib进行绘制数据图,常常需要设置中文的标签、图例,但是matplotlib对中文不是特别友好,如果你直接在标签中输入中文,那么绘制出来的数据图上的中文部分就是乱码。
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)
plt.plot(x, sin_y)
plt.title('三角函数', fontsize=24)
plt.xlabel('数据', fontsize=16)
plt.ylabel('正弦值', fontsize=16)
plt.show()
那么,怎么解决呢?看这里,只需一行代码解决中文乱码问题
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)
plt.plot(x, sin_y)
plt.rcParams['font.sans-serif'] = ['FangSong'] # 设置字体仿宋,黑体为SimHei
plt.title('三角函数', fontsize=24)
plt.xlabel('数据', fontsize=16)
plt.ylabel('正弦值', fontsize=16)
plt.show()
但是,中文乱码问题解决了,好像又出现新的问题了。我们发现上图x轴的负号又乱码了,那怎么搞呢?
同样,只需一行代码解决负号乱码问题
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)
plt.plot(x, sin_y)
plt.rcParams['font.sans-serif'] = ['FangSong'] # 设置字体仿宋,黑体为SimHei
plt.rcParams['axes.unicode_minus'] = False
plt.title('三角函数', fontsize=24)
plt.xlabel('数据', fontsize=16)
plt.ylabel('正弦值', fontsize=16)
plt.show()
最后附一个不同字体对应的编码
字体 | 对应名称 |
黑体 | SimHei |
微软雅黑 | Microsoft YaHei |
微软正黑体 | Microsoft JhengHei |
新宋体 | NSimSun* |
新细明体 | PMingLiU* |
细明体 | MingLiU* |
标楷体 | DFKai-SB* |
仿宋 | FangSong |
楷体 | KaiTi |
仿宋_GB2312 | FangSong_GB2312 |
楷体_GB2312 | KaiTi_GB2312 |
注意:有些字体matplotlib没有自带,需要自己去下载。
关注公众号,获取200+本Python、人工智能相关学习资料