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源码 这里观察到多次判断,首先要…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...