1. 错误提示
Matplotlib 中文标签不显示的问题通常是由于中文字符在图形中的编码问题导致的。例如:
import numpy
import matplotlib.pyplot as plt
z = numpy.arange(-5, 5, .1)
sigma_fn = numpy.vectorize(lambda z: 1/(1+numpy.exp(-z)))
sigma = sigma_fn(z)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(z, sigma)
ax.set_ylim([-0.5, 1.5])
ax.set_xlim([-5,5])
ax.grid(True)
ax.set_xlabel('z')
ax.set_title('sigmoid 函数')
plt.savefig('sigmoid.png')
plt.show()
存在的中文标签不能正确显示:
2. 解决方案
1、更改字体:确保你使用的字体支持中文字符。例如,你可以在 Matplotlib 中使用 'SimHei' 字体,这是一种常用的支持中文的字体。解决方法:
plt.rcParams['font.sans-serif'] = 'SimHei'
#当字体支持中文后,必须设置负号,否则当数值中出现负号就无法显示
plt.rcParams['axes.unicode_minus']=False
2、更改标签编码:在 Matplotlib 中,你可以尝试将标签编码更改为 'utf-8'。例如,你可以使用 .encode('utf-8')
方法将字符串编码为 'utf-8'。
plt.xlabel(u'中文标签'.encode('utf-8')) # 使用utf-8编码中文字符作为x轴标签
plt.ylabel(u'中文标签'.encode('utf-8')) # 使用utf-8编码中文字符作为y轴标签
3、更改图形后端:有时,更改图形后端也可以解决问题。你可以尝试更改 Matplotlib 的图形后端。例如,你可以尝试使用 'Agg' 后端而不是 'TkAgg' 后端。你可以通过以下方式做到这一点:
plt.switch_backend('Agg') # 使用Agg后端