Matplotlib 中文显示

简介: Matplotlib 中文显示

Matplotlib 中文显示不是特别友好,要在 Matplotlib 中显示中文,我们可以通过两个方法:

设置 Matplotlib 的字体参数。
下载使用支持中文的字体库。
在未设置字体,默认情况显示如下,中文部分不能正常显示:

Matplotlib 的字体参数
我们可以先获取系统的字体库列表:

实例
from matplotlib import pyplot as plt
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

for i in a:
print(i)
输出结果类似如下:

...
Heiti TC
Helvetica
Helvetica Neue
Herculanum
Hiragino Maru Gothic Pro
Hiragino Mincho ProN
Hiragino Sans
Hiragino Sans GB
Hoefler Text
...
以上代码输出 font_manager 的 ttflist 中所有注册的名字,找一个看中文字体例如:STFangsong(仿宋)、Heiti TC(黑体),然后添加以下代码即可。

对于 Windows:

plt.rcParams['font.family'] = 'SimHei' # 替换为你选择的字体
在 Windows 系统上,选择 SimHei(黑体)或其他中文字体,并将其设置为 Matplotlib 的默认字体。

对于 Linux:

plt.rcParams['font.family'] = 'WenQuanYi Micro Hei' # 替换为你选择的字体
在Linux系统上,使用 fc-list 命令查看已安装的字体,选择一个中文字体,并将其设置为 Matplotlib 的默认字体。

对于 macOS:

plt.rcParams['font.family'] = 'Heiti TC' # 替换为你选择的字体
通过设置 plt.rcParams['font.family'],你告诉 Matplotlib 使用选择的字体来渲染文本,从而在图表中正确显示中文。

这样,你就能够在 Matplotlib 图表中使用系统支持的中文字体了。

实例
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Heiti TC' # 替换为你选择的字体

创建数据

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

绘制折线图

plt.plot(x, y)

添加标题和标签

plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')

显示图形

plt.show()
这样中文就可以正常显示了,显示如下:

使用字体库
Matplotlib 默认情况不支持中文,我们可以使用以下简单的方法来解决。

这里我们使用思源黑体,思源黑体是 Adobe 与 Google 推出的一款开源字体。

官网:https://source.typekit.com/source-han-serif/cn/

GitHub 地址:https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese

打开链接后,在里面选一个就好了:

你也可以在网盘下载: https://pan.baidu.com/s/10-w1JbXZSnx3Tm6uGpPGOw,提取码:yxqu。

可以下载个 OTF 字体,比如 SourceHanSansSC-Bold.otf,将该文件文件放在当前执行的代码文件中:

SourceHanSansSC-Bold.otf 文件放在当前执行的代码文件中:

实例
import numpy as np
from matplotlib import pyplot as plt
import matplotlib

fname 为 你下载的字体库路径,注意 SourceHanSansSC-Bold.otf 字体的路径

zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf")

x = np.arange(1,11)
y = 2 * x + 5
plt.title("菜鸟教程 - 测试", fontproperties=zhfont1)

fontproperties 设置中文显示,fontsize 设置字体大小

plt.xlabel("x 轴", fontproperties=zhfont1)
plt.ylabel("y 轴", fontproperties=zhfont1)
plt.plot(x,y)
plt.show()
执行输出结果如下图:

目录
相关文章
|
算法 机器学习/深度学习 数据挖掘
带你读《增强型分析:AI驱动的数据分析、 业务决策与案例实践》之三:预测模型的新技术
本书“深入浅出的原理介绍 + 实际使用的案例”的内容安排能够使得数据分析建模人员从算法原理、数据挖掘知识结构、业务应用方法等方面得到提升,帮助数据分析建模人员开阔眼界、优化知识结构、提升实践技能。
|
5月前
|
机器学习/深度学习 人工智能 编解码
如何用AI快速生成Logo?如我对比了7个AI Logo生成器,简单、高效、专业
在品牌设计中,Logo 是核心元素。传统设计方式成本高、耗时长,而 AI Logo 工具如 LogoMaker、AI Logo Creator、燕雀光年AILogo生成器等可快速生成多样设计方案,支持个性化定制与多格式输出,极大提升了效率,降低了门槛,适合初创企业及个人品牌高效打造独特标识。
674 0
|
10月前
|
数据采集 Web App开发 运维
动态内容加载的解决方案:Selenium与Playwright对比故障排查实录
本项目旨在解决亚航航班数据采集中的反爬挑战。初期使用Selenium遇到Cloudflare验证,后切换至Playwright仍触发反爬机制。通过引入代理IP轮换和UA策略,最终实现双方案并通过压力测试。Selenium适合模拟真人操作,而Playwright在执行速度和自动等待机制上表现更优,成功率高达95%。建议对强反爬网站优先采用Playwright,并配合完善的代理管理和请求特征模拟。
603 1
动态内容加载的解决方案:Selenium与Playwright对比故障排查实录
|
Linux iOS开发 MacOS
Matplotlib 教程 之 Matplotlib 中文显示 2
Matplotlib 中文显示教程:介绍如何在 Matplotlib 中显示中文,包括设置 Matplotlib 字体参数和下载支持中文的字体库。通过设置 `plt.rcParams['font.family']` 为系统中的中文字体(如 SimHei、WenQuanYi Micro Hei、Heiti TC),可以实现中文的正确显示。
359 0
|
存储 安全 Windows
U盘无法访问怎么解决?7个U盘修复方法
​U盘很常见也很常用,平时在存储文件和传输数据的时候使用频率非常高。经常使用U盘的用户可能对U盘无法访问的情况比较熟悉了。U盘出现打不开无法访问数据的问题时不仅会影响我们的工作和学习效率,最致命的是还会导致重要数据的丢失。所以,U盘无法访问是什么原因引起的呢?遇到这个问题的时候怎么处理才稳妥呢?今天就和大家一起了解一下U盘无法访问的原因和应对的方法,帮助大家轻松摆脱困扰。
物联网卡:带你快速了解物联网卡充值失败的原因
物联网卡充值失败可能由多种原因引起,下面是一些常见的原因及相应的操作建议,以帮助您解决问题:
|
12月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
12月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
863 4
|
12月前
|
前端开发 API
企业及图文视频内容
企业及图文视频内容
|
Java Spring
设置 Spring Boot 的定时任务线程池以优雅退出
设置 Spring Boot 的定时任务线程池以优雅退出
559 0