返回

matplotlib 绘图中文乱码:缘由及解决之道

人工智能

问题症结所在:缺失中文字体

当您尝试在 matplotlib 中绘制中文时,可能会遭遇令人沮丧的乱码问题。究其原因,是 matplotlib 的默认字体并非中文字体。因此,在绘制中文时,matplotlib 会使用不兼容的字体进行替换,从而导致乱码的产生。

一劳永逸的解决方案:设定微软雅黑为默认字体

为了彻底解决 matplotlib 中文乱码的问题,我们可以将微软雅黑字体设为默认首选字体。微软雅黑是一款内置于 Windows 系统中的中文字体,兼容性极佳。通过将其设为默认字体,我们可以确保 matplotlib 在绘制中文时始终使用正确的字体,从而避免乱码的出现。

操作步骤:让微软雅黑脱颖而出

  1. 寻找配置文件:

    前往 Python 的安装目录,找到配置文件 %Python_Home%\Lib\site-packages\matplotlib\mpl-data\matplotlibrc

  2. 打开配置文件:

    使用文本编辑器打开该配置文件。

  3. 定位字体设置:

    在配置文件中,找到与字体相关的设置项。通常情况下,这些设置项位于文件末尾。

  4. 添加新设置:

    在字体设置项的末尾,添加以下内容:

    font.family: sans-serif
    font.sans-serif: Microsoft YaHei
    
  5. 保存并退出:

    保存配置文件并退出文本编辑器。

立即生效:重启 matplotlib

现在,您需要重新启动 matplotlib,以便新设置生效。您可以通过以下两种方式之一重启 matplotlib:

  1. 在 Python 控制台中执行以下命令:

    import matplotlib
    matplotlib.use('Agg')
    
  2. 在 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 中自由绘制中文,而不用担心乱码的困扰。如果您遇到任何其他问题,请随时寻求帮助。