当前位置: 代码网 > it编程>前端脚本>Python > 解决Matplotlib中文显示乱码的完整教程

解决Matplotlib中文显示乱码的完整教程

2024年12月07日 Python 我要评论
问题描述当我们在matplotlib中使用中文字符时,通常会遇到如下问题:中文标题、标签或数据无法正确显示,而是出现乱码或方框。以下是一个简单的示例代码:示例代码import matplotlib.p

问题描述

当我们在 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 中中文显示问题。确保字体安装和配置正确,不仅可以提升图表的美观性,还能增强图表的可读性。希望这篇文章能够帮助你更好地在 python 中使用 matplotlib 绘制中文图表。

以上就是解决matplotlib中文显示乱码的完整教程的详细内容,更多关于matplotlib中文乱码的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com