在数据分析和可视化领域,Matplotlib 是一个广泛使用的绘图库。然而,许多用户在使用 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()
运行结果
在没有正确配置字体的情况下,执行上述代码后,中文字符将无法正常显示,可能出现乱码或方框,示例如下:
解决方案
下载并安装中文字体
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"
设置 Matplotlib
使用中文字体
下载字体后,接下来要让 Matplotlib
使用该字体。通过 font_manager
来加载新的字体,并通过 rc
设置默认字体。
import matplotlib # 添加下载的字体文件 matplotlib.font_manager.fontManager.addfont('chinese.simhei.ttf') # 设置 Matplotlib 使用 SimHei 字体 matplotlib.rc('font', family='SimHei')
验证字体是否成功加载
你可以通过以下代码检查 Matplotlib
是否成功加载了 SimHei
字体:
import matplotlib.font_manager as fm # 打印系统中所有可用的字体 for font in fm.fontManager.ttflist: print(font.name)
在输出中,如果显示
SimHei
字体,说明字体安装成功。设置中文字体显示
虽然上述步骤已经加载了
SimHei
字体,但为了确保Matplotlib
正常显示中文标签,还需要设置rcParams
来指定默认字体为SimHei
,并确保负号可以正常显示。
# 设置 Matplotlib 使用 SimHei 字体来显示中文 plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 正常显示负号
完整示例
将上述设置整合到一起,形成完整的代码如下:
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()
最终效果
经过上述配置后,中文字符应该能够正常显示在图表中,效果如下所示:
扩展:Matplotlib 配置与调试
查看 Matplotlib
字体缓存目录
如果你遇到字体加载问题,可以查看 Matplotlib
的缓存目录,确保字体已经成功安装并被 Matplotlib
识别。
import matplotlib as mpl print(mpl.get_cachedir())
这将返回缓存目录的路径,帮助你调试字体加载问题。
其他字体支持
除了 SimHei
(黑体)之外,Matplotlib
还支持多种其他中文字体,如 Microsoft YaHei(微软雅黑),FangSong(仿宋),以及系统自带的其他字体。你可以选择合适的字体来调整图表样式。
总结
通过本文的详细指导,读者可以轻松解决 Matplotlib 中文显示乱码的问题。我们首先介绍了如何下载并安装中文字体,然后通过设置 Matplotlib 的字体管理器和 rcParams 参数,确保中文字符在图表中正确显示。此外,我们还提供了验证字体加载的方法和一些扩展内容,帮助读者进一步优化和调试。希望本文能为使用 Matplotlib 进行中文图表可视化的用户提供有价值的参考。
本文来源于#一点一木,由@蜜芽 整理发布。如若内容造成侵权/违法违规/事实不符,请联系本站客服处理!
该文章观点仅代表作者本人,不代表本站立场。本站不承担相关法律责任。
如若转载,请注明出处:https://www.zhanid.com/biancheng/2543.html