matplotlib 绘图中文乱码:缘由及解决之道
2023-10-29 15:00:40
问题症结所在:缺失中文字体
当您尝试在 matplotlib 中绘制中文时,可能会遭遇令人沮丧的乱码问题。究其原因,是 matplotlib 的默认字体并非中文字体。因此,在绘制中文时,matplotlib 会使用不兼容的字体进行替换,从而导致乱码的产生。
一劳永逸的解决方案:设定微软雅黑为默认字体
为了彻底解决 matplotlib 中文乱码的问题,我们可以将微软雅黑字体设为默认首选字体。微软雅黑是一款内置于 Windows 系统中的中文字体,兼容性极佳。通过将其设为默认字体,我们可以确保 matplotlib 在绘制中文时始终使用正确的字体,从而避免乱码的出现。
操作步骤:让微软雅黑脱颖而出
-
寻找配置文件:
前往 Python 的安装目录,找到配置文件
%Python_Home%\Lib\site-packages\matplotlib\mpl-data\matplotlibrc
。 -
打开配置文件:
使用文本编辑器打开该配置文件。
-
定位字体设置:
在配置文件中,找到与字体相关的设置项。通常情况下,这些设置项位于文件末尾。
-
添加新设置:
在字体设置项的末尾,添加以下内容:
font.family: sans-serif font.sans-serif: Microsoft YaHei
-
保存并退出:
保存配置文件并退出文本编辑器。
立即生效:重启 matplotlib
现在,您需要重新启动 matplotlib,以便新设置生效。您可以通过以下两种方式之一重启 matplotlib:
-
在 Python 控制台中执行以下命令:
import matplotlib matplotlib.use('Agg')
-
在 Python 脚本中执行以下代码:
import matplotlib.pyplot as plt plt.figure() plt.show()
终极测试:绘制中文
完成以上步骤后,您就可以在 matplotlib 中绘制中文了。为了验证是否成功,您可以尝试运行以下代码:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.xlabel('横坐标')
plt.ylabel('纵坐标')
plt.title('图表标题')
plt.show()
如果一切顺利,您将看到一张带有中文标签和标题的图表,而不会出现乱码。
结语
通过将微软雅黑字体设为 matplotlib 的默认首选字体,我们成功地解决了 matplotlib 中文乱码的问题。现在,您可以在 matplotlib 中自由绘制中文,而不用担心乱码的困扰。如果您遇到任何其他问题,请随时寻求帮助。