问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一步到位:解决 Matplotlib 中文显示乱码的完整教程

创作时间:
作者:
@小白创作中心

一步到位:解决 Matplotlib 中文显示乱码的完整教程

引用
CSDN
1.
https://blog.csdn.net/qq_41865545/article/details/144268158

在使用Matplotlib绘制图表时,很多开发者都会遇到中文无法正常显示的问题。默认情况下,Matplotlib并不支持中文字符,需要手动设置字体。这篇博客将教你如何解决Matplotlib绘图显示中文的常见问题,确保中文字符能够在图表中正确显示。

问题描述

当我们在Matplotlib中使用中文字符时,通常会遇到如下问题:中文标题、标签或数据无法正确显示,而是出现乱码或方框。以下是一个简单的示例代码:

import matplotlib.pyplot as plt
# 数据
categories = ['A类', 'B类', 'C类', 'D类']
values = [3, 7, 5, 10]
# 创建柱状图
plt.bar(categories, values)
# 设置标题和标签
plt.title('柱状图', fontsize=16)  # 中文标题
plt.xlabel('类别', fontsize=12)  # 中文X轴标签
plt.ylabel('数量', fontsize=12)  # 中文Y轴标签
# 显示图表
plt.show()

在没有正确配置字体的情况下,执行上述代码后,中文字符将无法正常显示,可能出现乱码或方框,示例如下:

解决方案

  1. 下载并安装中文字体

Matplotlib默认使用的字体库不包括中文字体。为了解决这个问题,我们需要下载一个支持中文的字体,如SimHei(黑体)。

可以使用wget下载字体文件:

!wget -O simhei.ttf "https://www.wfonts.com/download/data/2014/06/01/simhei/chinese.simhei.ttf"
# 或
!wget -O simhei.ttf "https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf"
  1. 设置Matplotlib使用中文字体

下载字体后,接下来要让Matplotlib使用该字体。通过font_manager来加载新的字体,并通过rc设置默认字体。

import matplotlib
# 添加下载的字体文件
matplotlib.font_manager.fontManager.addfont('chinese.simhei.ttf')
# 设置 Matplotlib 使用 SimHei 字体
matplotlib.rc('font', family='SimHei')
  1. 验证字体是否成功加载

你可以通过以下代码检查Matplotlib是否成功加载了SimHei字体:

import matplotlib.font_manager as fm
# 打印系统中所有可用的字体
for font in fm.fontManager.ttflist:
    print(font.name)

在输出中,如果显示SimHei字体,说明字体安装成功。

  1. 设置中文字体显示

虽然上述步骤已经加载了SimHei字体,但为了确保Matplotlib正常显示中文标签,还需要设置rcParams来指定默认字体为SimHei,并确保负号可以正常显示。

# 设置 Matplotlib 使用 SimHei 字体来显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
  1. 完整示例

将上述设置整合到一起,形成完整的代码如下:

import matplotlib.pyplot as plt
import matplotlib
# 设置字体,确保中文显示正常(非必须添加此代码)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
# 数据
categories = ['A类', 'B类', 'C类', 'D类']
values = [3, 7, 5, 10]
# 创建柱状图
plt.bar(categories, values)
# 设置标题和标签
plt.title('柱状图', fontsize=16)  # 中文标题
plt.xlabel('类别', fontsize=12)  # 中文X轴标签
plt.ylabel('数量', fontsize=12)  # 中文Y轴标签
# 显示图表
plt.show()
  1. 最终效果

经过上述配置后,中文字符应该能够正常显示在图表中,效果如下所示:

扩展:Matplotlib配置与调试

查看Matplotlib字体缓存目录

如果你遇到字体加载问题,可以查看Matplotlib的缓存目录,确保字体已经成功安装并被Matplotlib识别。

import matplotlib as mpl
print(mpl.get_cachedir())

这将返回缓存目录的路径,帮助你调试字体加载问题。

其他字体支持

除了SimHei(黑体)之外,Matplotlib还支持多种其他中文字体,如Microsoft YaHei(微软雅黑),FangSong(仿宋),以及系统自带的其他字体。你可以选择合适的字体来调整图表样式。

总结

通过上述步骤,我们可以解决Matplotlib中中文显示问题。确保字体安装和配置正确,不仅可以提升图表的美观性,还能增强图表的可读性。希望这篇文章能够帮助你更好地在Python中使用Matplotlib绘制中文图表。

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号