Python Matplotlib 的学习笔记
Python Matplotlib 的学习笔记
- 0. Python Matplotlib 简介
- 1. 为什么要用 Matplotlib?
- 2. Matplotlib 基础类详解
- 2-1. Line(线)
- 2-2. Marker(标记)
- 2-3. Text(文本)
- 2-4. Legend(图例)
- 2-5. Grid(网格)
- 2-6. Title(标题)
- 2-7. Image(图片)
- 3. Matplotlib 容器类详解
- 3-1. Figure(画布)
- 3-2. Axes(画框)
- 3-3. Axis(坐标轴)
- 3-4. Tick(刻度)
- 4. Matplotlib 常见的图形类型详解
- 4-1. plot(线图)
- 4-2. scatter(散点图)
- 4-3. bar(柱状图)
- 4-4. barh(水平柱状图)
- 4-5. fill_between(填充区域图)
- 4-6. stackplot(堆叠区域图)
- 4-7. pie(饼图)
- 4-8. errorbar(误差棒图)
- 4-9. hist(直方图)
- 4-10. boxplot(箱线图)
- 4-11. axhline、axvline(水平/垂直线)
- 4-12. axhspan、axvspan(水平/垂直区域)
- 4-13. text(文本)
- 4-14. annotate(注释)
0. Python Matplotlib 简介
想象一下,如果数据是一群小动物,那么Matplotlib就是一个魔法画笔,可以让这些小动物变成美丽的图画。Matplotlib是Python中一个非常强大的库,它可以帮助我们将数据绘制成图表,让复杂的信息变得简单易懂。
1. 为什么要用 Matplotlib?
- 可视化数据:就像用画笔在纸上画出你想象中的世界一样,Matplotlib可以将数据画出来,让我们更直观地理解数据。
- 多样的图表:无论是简单的线图、柱状图,还是复杂的3D图,Matplotlib都能轻松应对。
- 高度定制:你可以调整图表的每一个细节,就像给画作添加不同的颜色和装饰一样。
2. Matplotlib 基础类详解
想象你在一个巨大的画布上绘画,Matplotlib就是你的画笔和颜料,让你能够在数据的世界中创作出美丽的艺术品。让我们一起来了解一下Matplotlib中的一些基础类,它们如何帮助我们绘制各种图形元素。
2-1. Line(线)
线就像是画布上的笔触,连接着数据点,展示数据之间的关系。
x = [1, 2, 3, 4]
y = [10, 20, 15, 25]# linestyle: supported values are '-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
plt.plot(x, y, linestyle='-', linewidth=2, color='blue') # 绘制蓝色实线
plt.show()
输出,

2-2. Marker(标记)
标记就像是高亮数据点的小星星,帮助我们标注出重要的数据点。
plt.plot(x, y, marker='o', color='red') # 使用红色圆圈标记每个数据点
plt.show()
输出,

2-3. Text(文本)
文本就像是在画布上添加注释,解释图中的各个部分。
plt.plot(x, y)
plt.text(2, 20, 'Important Point') # 在(2,20)的位置添加注释
plt.show()
输出,

2-4. Legend(图例)
图例就像是地图上的指南针,告诉我们每种颜色或形状代表的意义。
plt.plot(x, y, label='Line 1')
plt.legend() # 显示图例
plt.show()
输出,

2-5. Grid(网格)
网格就像是画布上的参考线,帮助我们更准确地理解数据点的位置。
plt.plot(x, y)
plt.grid(True) # 显示网格
plt.show()
输出,

2-6. Title(标题)
标题就像是画作的名称,告诉我们这幅画想要表达的主题。
plt.plot(x, y)
plt.title("Data Visualization") # 添加标题
plt.show()
输出,

2-7. Image(图片)
你还可以在Matplotlib中添加图片,就像是在画布上贴上一张照片。
img = plt.imread('image.png') # 读取图片
plt.imshow(img) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()
输出示例,

3. Matplotlib 容器类详解
在Matplotlib的艺术世界中,画布和画框就像是展示美丽图表的舞台和框架。让我们一起探索Matplotlib中的容器类:Figure(画布)、Axes(画框)、Axis(坐标轴)和Tick(刻度),它们如何共同作用来创造出精美的数据可视化作品。
3-1. Figure(画布)
Figure是Matplotlib中最顶层的容器,可以想象成一个空白的画布,所有的图表和元素都是在这个画布上绘制的。
fig = plt.figure(figsize=(8, 6)) # 创建一个大小为8x6英寸的画布
plt.show()
这就像是你准备了一个足够大的画布,准备在上面创作。
3-2. Axes(画框)
在Figure画布上,Axes是图表的主体,包括了图表内的数据区域、坐标轴、标题、图例等。一个Figure可以包含多个Axes。
fig, ax = plt.subplots() # 创建一个包含单个Axes的Figure
ax.plot([1, 2, 3], [10, 20, 30]) # 在Axes上绘图
plt.show()
输出,

这就像是在你的画布上定义了一个绘画区域,准备在这个区域内绘制你的作品。
3-3. Axis(坐标轴)
Axis对象控制着图表中的坐标轴,包括坐标轴的界限、坐标轴上的刻度(Tick)和刻度标签等。
fig, ax = plt.subplots() # 创建一个包含单个Axes的Figure
ax.plot([1, 2, 3], [10, 20, 30]) # 在Axes上绘图
ax.xaxis.set_major_locator(plt.MaxNLocator(5)) # 设置x轴主刻度的最大数量为5
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f'${x}')) # 设置y轴刻度标签的格式
plt.show()
输出,

这就像是为你的绘画区域定制了尺子,帮助你更准确地标出数据的位置。
3-4. Tick(刻度)
Tick是坐标轴上的小标记,表示特定的数值。通过控制Tick,你可以调整刻度的位置、大小和标签。
fig, ax = plt.subplots() # 创建一个包含单个Axes的Figure
ax.tick_params(axis='x', rotation=45) # 将x轴的刻度标签旋转45度
ax.tick_params(axis='y', length=10) # 设置y轴刻度的长度为10
plt.show()
输出,

这就像是在尺子上标出了刻度,帮助人们读取具体的数值。
4. Matplotlib 常见的图形类型详解
想象你是一位艺术家,面前有各种画笔和颜料,Matplotlib就是你的工具箱,里面装着各种图形类型的工具,让你能够创作出各式各样的数据艺术品。
4-1. plot(线图)
线图就像是用画笔在纸上勾勒出的轨迹,展示数据随时间或其他变量的变化趋势。
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.show()
输出,

4-2. scatter(散点图)
散点图就像是在画布上随意洒下的彩色点,用来展示两个变量之间的关系。
plt.scatter([1, 2, 3, 4], [10, 20, 25, 30])
plt.show()
输出,

4-3. bar(柱状图)
柱状图就像是建立起来的一根根柱子,用来比较不同类别之间的数量或大小。
plt.bar(["A", "B", "C", "D"], [10, 20, 25, 30])
plt.show()
输出,

4-4. barh(水平柱状图)
水平柱状图是柱状图的一个变种,柱子横向展开,方便比较长度。
plt.barh(["A", "B", "C", "D"], [10, 20, 25, 30])
plt.show()
输出,

4-5. fill_between(填充区域图)
填充区域图就像是用颜料填充在两条线之间的区域,常用于表示范围或区间。
x = [1, 2, 3, 4]
y1 = [10, 20, 15, 25]
y2 = [15, 25, 20, 30]
plt.fill_between(x, y1, y2)
plt.show()
输出,

4-6. stackplot(堆叠区域图)
堆叠区域图就像是多层的彩色纸张叠加在一起,用来展示各部分随时间的变化。
plt.stackplot(x, y1, y2)
plt.show()
输出,

4-7. pie(饼图)
饼图就像是一个完整的圆形蛋糕被切成几块,每块代表数据的一部分,用来展示比例。
plt.pie([10, 20, 30, 40], labels=["A", "B", "C", "D"])
plt.show()
输出,

4-8. errorbar(误差棒图)
误差棒图用来表示数据的变异范围或不确定性,就像是在点上加上了能表达波动范围的小帽子。
plt.errorbar([1, 2, 3, 4], [10, 20, 25, 30], yerr=2)
plt.show()
输出,

4-9. hist(直方图)
直方图就像是将数据分组后,每组数据数量的高度,用来查看数据的分布情况。
plt.hist([1, 2, 2, 3, 4, 4, 4, 5])
plt.show()
输出,

4-10. boxplot(箱线图)
箱线图就像是数据分布的小房子,展示了数据的中位数、四分位数和异常值。
plt.boxplot([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
plt.show()
输出,

4-11. axhline、axvline(水平/垂直线)
这就像是在画布上画一条水平线或垂直线,用来标示出一个特定的值。
plt.axhline(y=0.5, color='r', linestyle='-') # 在y=0.5的位置画一条红色水平线
plt.axvline(x=0.5, color='b', linestyle='--') # 在x=0.5的位置画一条蓝色虚线垂直线
plt.show()
输出,

4-12. axhspan、axvspan(水平/垂直区域)
这些函数可以在画布上标记出一个水平或垂直的区域,就像是用透明颜色高亮某个区间。
plt.axhspan(0.25, 0.75, color='yellow', alpha=0.5) # 高亮y=0.25到y=0.75的区域
plt.axvspan(0.25, 0.75, color='green', alpha=0.5) # 高亮x=0.25到x=0.75的区域
plt.show()
输出,

4-13. text(文本)
text允许你在图中的任意位置添加文本,就像是在画中写下注释或说明。
plt.text(0.5, 0.5, 'Hello Matplotlib', ha='center', va='center') # 在图中央添加文本
plt.show()
输出,

4-14. annotate(注释)
annotate用于在图表中添加注释,你可以指定注释文本的位置和被注释点的位置,还可以有一个箭头指向被注释的点。
plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.annotate('This is the top', xy=(3, 25), xytext=(2, 28),arrowprops=dict(facecolor='black', shrink=0.05)) # 在第三个点添加注释
plt.show()
输出,

Matplotlib提供了丰富的图形类型和绘图工具,就像一个艺术家的画笔集,允许你以各种创意方式展示数据。从简单的线图到复杂的注释和区域高亮,你可以利用这些工具来讲述数据的故事,使你的分析结果生动、直观。探索这些图形类型,让你的数据可视化作品更加丰富和有说服力。
完结!
相关文章:
Python Matplotlib 的学习笔记
Python Matplotlib 的学习笔记 0. Python Matplotlib 简介1. 为什么要用 Matplotlib?2. Matplotlib 基础类详解2-1. Line(线)2-2. Marker(标记)2-3. Text(文本)2-4. Legend(图例&…...
SQL语言1
创建数据库 CREATE DATABASE 展示数据库 SHOW DATABASE 整数 INT 有小数点的数 DECIMA(m, n) #m是有几位数,n是有几位小数 字符串 VARCHAR(n) (Binary Large Object)图片 影片 BLOB ‘YYYY-MM-DD’日期 DATA YYYY-MM-DD HH:MM:SS 记…...
PowerShell搭建vue起始项目
Windows PowerShell搭建vue起始项目 搜索PowerShell,以管理员身份运行。 复制文件夹路径 cd 到这个文件夹位置 命令行创建项目:vue create 项目名 这里写自己的项目名就行,我写的yeb vue create yeb 创建成功后是这样的 有颜色的就是选中的ÿ…...
jmeter遇到连接数据库的问题
jmeter连接mysql或者oracle简单,但是连接过inceptor吗? 上货 1、下载驱动inceptor 5.1.2.jar包 2、在添加驱动那里导入 3、在JBC request中的写法 PS:没什么可说的...
应急响应实战笔记02日志分析篇(3)
第3篇:Web日志分析 ox01 Web日志 Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析,不仅可以帮助我们定位攻击者,还可以帮助我们还原攻击路径,找到网站存在的安全漏洞并进行修复。 我们来…...
常见性能优化策略
对于经常接触高并发服务的同学来学,会经常涉及到性能优化,但是由于平时很少总结,内容会比较分散,这里简单做一些总结 1:空间换时间 比如一些数据的访问需要很快返回结果,原本在磁盘上的数据,需…...
【微信小程序】微信小程序开发:从入门到精通
微信小程序开发:从入门到精通 一、开发准备二、小程序开发流程1、注册与创建项目2、开发页面3、配置4、调试与预览5、发布与审核 随着移动互联网的普及,微信小程序成为了越来越多企业和个人开发者的首选。小程序是一种无需下载安装即可使用的应用&#x…...
【经验】STM32的一些细节
这两天 碰到的奇葩问题是 STM32定时器同步的问题。 我的设计本意是:使用定时器T3以100us的周期来定时发送命令给 FPGA。由于编码器出结果的最长时间为51us。因此,希望PWM中断要滞后于T3 约60us 。 调试过程:分别在T3和PWM中断中置IO1&#…...
ubuntu22.04安装部署03: 设置root密码
一、前言 ubuntu22.04 安装完成以后,默认root用户是没有设置密码的,需要手动设置。具体的设置过程如下文内容所示: 相关文件: 《ubuntu22.04装部署01:禁用内核更新》 《ubuntu22.04装部署02:禁用显卡更…...
【lesson56】生产者消费者模型
文章目录 学习生产者消费者模型过程中要回答的两个问题生产者消费者模型的概念基于阻塞队列的生产者消费者模型编码实现Common.hLockGuard.hppCondtion.hppBlockQueue.hppTask.hppConProd.cc 学习生产者消费者模型过程中要回答的两个问题 1.条件变量是在条件满足的时候&#x…...
MySQL5.7升级到MySQL8.0的最佳实践分享
一、前言 事出必有因,在这个月的某个项目中,我们面临了一项重要任务,即每年一次的等保测评整改。这次测评的重点是Mysql的一些高危漏洞,客户要求我们无论如何必须解决这些漏洞。尽管我们感到无奈,但为了满足客户的要求…...
Rust 数据结构与算法:5栈:用栈实现前缀、中缀、后缀表达式
3、前缀、中缀和后缀表达式 计算机是从左到右处理数据的,类似(A (B * C))这样的完全括号表达式,计算机如何跳到内部括号计算乘法,然后跳到外部括号计算加法呢? 一种直观的方法是将运算符移到操作数外,分离运算符和操…...
作业day6
数据库 sqlite3 sq.db 如果sq.db存在则直接打开sq.db数据库,如果不存在则先创建再打开; 系统命令 需要以 . 开头,不需要以 ; 结尾 .quit 退出数据库 .exit 退出数据库 .help 显示帮助信息,获取所有系统命令; .table 查看当前数据…...
前方预警!2024年七大网络安全威胁
新颖创新技术的兴起和迅速采用已极大地改变了各行各业的全球网络安全和合规格局,比如生成式人工智能、无代码应用程序、自动化和物联网等新技术。 网络犯罪分子正转而采用新的技术、工具和软件来发动攻击,并造成更大的破坏。因此,《2023年网…...
绿色化 数据库 MongoDB 和 mysql 安装
绿色化 数据库 MongoDB 和 mysql 安装 【1.1】 前言 为什么要绿色化 安装呢?因为系统老升级,老重装!!也方便了解下数据库配置和库在那 绿色软件喜欢一般放在 D盘tools目录里 D:\tools\ 数据库 MongoDB D:\tools\MongoDB 数…...
npm install 一直卡着不动如何解决
目录 方式一:方式二: 方式一: npm cache clean --force npm config set registry https://registry.npmmirror.com npm install下面是简单的解释: 🍀1、强制清理 npm 缓存 npm cache clean --force🍀2、设…...
电路设计(15)——篮球赛24秒违例倒计时报警器的proteus仿真
1.设计要求 设计、制作一个篮球赛24秒违例倒计时报警器。要求: (1)具有倒计时功能。可完整实现从“24”秒开始依序倒计时并显示倒计时过程,显示时间间隔为1秒。 (2)具有消隐功能。当“24”秒倒计时…...
golang 集成sentry:http.Client
http.Client 是 Go 标准库 HTTP 客户端实现, sentry-go也没有这个组件,所以需要自己实现。 我们只需要对 http.Transport 进行包装即可, 完整代码如下 package mainimport ("bytes""fmt""io""log"&…...
设计链表(不难,代码稍微多一点)
设计链表 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。ad…...
[GXYCTF2019]禁止套娃
进来发现只有这句话,习惯性访问一下flag.php,发现不是404,那就证明flag就在这了,接下来要想办法拿到flag.php的源码。 这道题是.git文件泄露网页源码,githack拿到index.php源码 这里观察到多次判断,首先要…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
