当前位置: 首页 > news >正文

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 创建成功后是这样的 有颜色的就是选中的&#xff…...

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源码 这里观察到多次判断,首先要…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...