Matplotlib 中文乱码

在使用 Matplotlib 绘制图表时,如果标题、标签、注释等包含了中文文本,有时会出现中文显示为方块或者乱码的情况。这是因为 Matplotlib 默认使用的字体可能不支持中文。

想要解决 Matplotlib 中文乱码,最常用的方法是指定一个支持中文的字体。我们可以通过修改 Matplotlib 的配置参数来实现。

Matplotlib 的配置参数存储在 plt.rcParams 这个字典中。比如我们可以通过修改 plt.rcParams['font.family'] 参数来设置字体。

示例:Matplotlib 解决中文乱码

import matplotlib.pyplot as plt

# 解决中文乱码
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
# 解决负号不显示
plt.rcParams['axes.unicode_minus'] = False

# 绘图
x = [1, 2, 3, 4]
y = [16, 15, 18, 17]
plt.plot(x, y)

# 定义标题
plt.title('一个折线图')
plt.xlabel('x轴标题')
plt.ylabel('y轴标题')

# 显示
plt.show()

运行之后,效果如下图所示。

Matplotlib解决中文乱码问题

分析:

如果图表中包含中文,就必须使用 plt.rcParams['font.family'] 来设置中文字体,不然就会有乱码效果。如果图表中包含符号(-),也必须设置 plt.rcParams['axes.unicode_minus'] 为 False。

在实际工作中,我们都建议在绘图的一开始处,统一加上下面这两句代码。

plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']    # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False                 # 解决负号不显示

plt.rcParams['font.family'] = ['SimHei', 'PingFang SC'] 这句代码将 Matplotlib 的字体设置为 “SimHei(黑体)” 或 “PingFang SC(苹方)” 。font.family 可以接受一个包含多个字体名称的列表,Matplotlib 会按顺序尝试使用列表中的字体,直到找到可用的字体为止。

plt.rcParams['axes.unicode_minus'] = False 这句代码用于解决在某些字体下,负号可能会显示为方块的问题。

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号