返回

如何让matplotlib绘图中文显示:实用指南

后端

使用 Python 实现 matplotlib 绘图的中文显示

一、简介

matplotlib 是一个广泛使用的 Python 库,用于创建各种类型的可视化,包括图表、图形和地图。但是,matplotlib 默认情况下不支持中文显示。为了在 matplotlib 绘图中显示中文,需要进行一些配置。本文将分步介绍如何在 Windows 和 macOS 系统中实现 matplotlib 的中文显示。

二、全局设置

全局设置是适用于所有使用 matplotlib 的程序的永久解决方案。

  1. 安装字体库:

    在 Windows 系统中,可以使用以下代码:

    import matplotlib
    matplotlib.use('TkAgg')
    

    在 macOS 系统中,可以使用以下代码:

    import matplotlib
    matplotlib.use('MacOSX')
    
  2. 设置字体库:

    在 Windows 系统中,可以使用以下代码:

    import matplotlib.font_manager as fm
    fm.findfont(fm.FontProperties(fname='C:\\Windows\\Fonts\\SimHei.ttf'))
    

    在 macOS 系统中,可以使用以下代码:

    import matplotlib.font_manager as fm
    fm.findfont(fm.FontProperties(fname='/Library/Fonts/PingFang.ttc'))
    
  3. 设置字体属性:

    在 Windows 系统中,可以使用以下代码:

    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'SimHei']
    

    在 macOS 系统中,可以使用以下代码:

    import matplotlib.pyplot as plt
    plt.rcParams['font.family'] = 'SimHei'
    

三、当前程序设置

当前程序设置只适用于当前正在运行的程序。

  1. 设置字体库:

    可以使用全局设置中的相同代码,将字体库添加到当前程序中。

  2. 设置字体属性:

    可以使用全局设置中的相同代码,将字体属性设置为当前程序。

四、示例代码

以下是一个示例代码,演示如何使用 matplotlib 绘制包含中文标签和图例的图形:

import matplotlib.pyplot as plt
import numpy as np

# 设置字体库和字体属性
import matplotlib.font_manager as fm
fm.findfont(fm.FontProperties(fname='/Library/Fonts/PingFang.ttc'))
plt.rcParams['font.family'] = 'SimHei'

# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制图形
plt.plot(x, y)

# 添加中文标签和图例
plt.xlabel('时间')
plt.ylabel('振幅')
plt.title('正弦曲线')
plt.legend(['正弦曲线'])

# 显示图形
plt.show()

五、常见问题解答

1. 为什么我在 Windows 系统中使用 Arial Unicode MS 字体时会出现乱码?

确保已正确安装 Arial Unicode MS 字体。

2. 我在 macOS 系统中看不到中文,即使我已经设置了字体库和字体属性。

尝试重新启动 Python 环境。

3. 我在绘制中文图例时遇到问题。

确保字体库和字体属性已正确设置。另外,尝试使用 prop 参数显式设置图例的字体属性。

4. 如何在 matplotlib 中使用其他中文字体?

可以在系统中安装其他中文字体,然后使用 fontproperties 参数显式设置字体。

5. 中文显示在图形中太小或太大。

可以使用 fontsize 参数调整中文字体的字体大小。

结论

通过遵循本文中介绍的步骤,您可以在 Windows 和 macOS 系统中的 matplotlib 绘图中实现中文显示。使用中文可视化数据可以增强 matplotlib 图形的可读性和理解性,特别是在需要使用中文文本的应用程序中。