在使用matplotlib进行绘图时,会出现中文字体显示乱码的问题或坐标轴负号无法正常显示的问题。该问题可以通过下面两行代码解决
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为SimHei
plt.rcParams['axes.unicode_minus']=False # 修复负号问题
示例代码
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为SimHei
plt.rcParams['axes.unicode_minus']=False # 修复负号问题
plt.title('标题')
plt.plot(range(5), [2, 1, 0, -1, -2])
plt.show()
然而,当负号出现在指数上时,负号仍无法正常显示,如
这里设置plt.rcParams['axes.unicode_minus'] = False
也无法解决问题。
这里的解决方案是不使用SimHei字体,而使用Microsoft YaHei字体。此时甚至plt.rcParams['axes.unicode_minus'] = False
也不需要了
import matplotlib.pyplot as plt
# plt.rcParams['font.sans-serif'] = ['SimHei'] # 不使用字体SimHei
# plt.rcParams['axes.unicode_minus']=False # 这一行也不需要了
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用字体SimHei
plt.title('标题')
plt.plot(range(5), [2, 1, 0, -1, -2])
plt.show()
运行结果如下