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提供了丰富的图形类型和绘图工具,就像一个艺术家的画笔集,允许你以各种创意方式展示数据。从简单的线图到复杂的注释和区域高亮,你可以利用这些工具来讲述数据的故事,使你的分析结果生动、直观。探索这些图形类型,让你的数据可视化作品更加丰富和有说服力。

完结!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国电子学会2023年12月份青少年软件编程Scratch图形化等级考试试卷一级真题(含答案)

2023-12 Scratch一级真题 分数:100 题数:37 测试时长:60min 一、单选题(共25题,共50分) 1.观察下列每个圆形中的四个数,找出规律,在括号里填上适当的数?(C)&#xf…

预处理详解(下)

1.#运算符 #运算符将宏的一个参数转换为字符串字面量。它仅允许出现在带参数的宏的替换列表中。 #运算符所执行的操作可以理解为”字符串化“。 例如: 我们将打印的字符串中的n改为参数n,这样在传参的时候就也会随着变化。假如我们不将其改为参数n的话会发生什么呢…

C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(3) 保存表格数据

对上两篇篇的工作C Qt框架开发| 基于Qt框架开发实时成绩显示排序系统(1)-CSDN博客和C Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示-CSDN博客继续优化,增加一个保存按钮,用于保存成绩数据…

论文阅读-面向机器学习的云工作负载预测模型的性能分析

论文名称:Performance Analysis of Machine Learning Centered Workload Prediction Models for Cloud 摘要 由于异构服务类型和动态工作负载的高变异性和维度,资源使用的精确估计是一个复杂而具有挑战性的问题。在过去几年中,资源使用和流…

给定n个结点的树,其中有k个结点是特殊结点(未知),定义好结点:该结点到k个特殊结点的距离之和最小。若随机k个结点为特殊结点,求好结点个数的期望值

题目 思路: 举例: 其中黑色结点为特殊结点,可以看出,每种情况都有一个结点的s值不等于k / 2,但是是好结点,所以最后答案加一。 #include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second …

【北邮鲁鹏老师计算机视觉课程笔记】10 Classification 分类

【北邮鲁鹏老师计算机视觉课程笔记】10 Classification 分类 1 图像识别的基本范式 检测问题&#xff1a;不仅要知道有没有&#xff0c;还要知道在哪里 分类是整图级标签&#xff0c;检测是区域级标签&#xff0c;分割是像素级标签 2 检测任务的应用 3 单实例识别与类别识别…

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Turbo编码原理

目录 Turbo码&#xff1a;无线通信中的革命性技术 引言 一、Turbo码的基本原理 1.1 卷积码基础&#xff1a; 1.2 Turbo码的构造&#xff1a; 1.2.1 分量编码器 1.2.2 随机交织器 1.2.3 穿刺和复接单元 1.3 编码器结构的重要性和影响 1.4 迭代解码&#xff1a; 1.4.1 …

接口测试怎么进行,如何做好接口测试

一、什么是接口&#xff1f; 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点&#xff0c;定义特定的交互点&#xff0c;然后通过这些交互点来&#xff0c;通过一些特殊的规则也就是协议&#xff0c;来进行数据之间的交互。 二、 常用接口采用方式&#x…

AI少女/HS2甜心选择2 仿剑三剑灵人物卡全合集打包

AI少女/HS2甜心选择2 仿剑三剑灵人物卡全合集打包 内含&#xff1a;菩提禅音[剑网3]明教晓天喵姐[剑3]明教晓天喵姐无帽版[剑3]茱莉亚[剑灵] 下载地址&#xff1a; https://www.changyouzuhao.cn/12492.html

配置DNS正反向解析服务!!!!

一.准备工作 #关闭防火墙和selinux,或者允许服务通过 [rootnode ~]# nmcli c mod ens32 ipv4.method manual ipv4.address 192.168.32.133/24 ipv4.gateway 192.168.32.2 ipv4.dns 192.168.32.132 [rootnode ~]# nmcli c reload [rootnode ~]# nmcli c up ens32[rootnode ~]# …

three.js 细一万倍教程 从入门到精通(三)

目录 五、详解PBR材质纹理 5.1、详解PBR物理渲染 5.2、标准网格材质与光照物理效果 5.3、置换贴图与顶点细分设置 5.4、设置粗糙度与粗糙度贴图 5.5、设置金属度与金属贴图 5.6、法线贴图应用 5.7、如何获取各种类型纹理贴图 5.8、纹理加载进度情况 单张图片加载 多…

数据结构-并查集

并查集原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个 单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询一 个元素归属于那个集合的运算。适合于描述这类…

Matplotlib Figure与Axes速成:核心技能一网打尽

Matplotlib Figure与Axes速成&#xff1a;核心技能一网打尽 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333; 一、Figure&#xff08;图形&#xff09;&#x1f333;&#x1f341;1. 创建Figure&#x1f341;&#x1f341;2. 添加Axes&#…

NARF关键点提取原理简介

一、NARF2D边缘点探测的矩形平面的边长s和计算点p和上邻域的距离所用的k值 二、障碍物边缘和阴影边缘 三、NARF边缘点探测 四、NARF借助边缘点信息进行关键点检测 本人也是参考其他博主&#xff0c;以及这份英文文献写的(毕竟是英文文献&#xff0c;部分翻译肯定有些误差&…

一探Lepton Search究竟

2024年1月25日&#xff0c;阿里巴巴原技术副总裁在 Twitter 上称用不到 500 行 Python 代码实现了 AI 对话搜索引擎&#xff0c;并在27日附上了开源地址&#xff1a;https://github.com/leptonai/search_with_lepton&#xff0c;截止春节期间已经5.8K的Star。 Twitter截图 Comm…

Spring Security学习(四)——登陆认证(包括自定义登录页)

前言 和前面的文章隔了很长时间才更新Spring Security系列&#xff0c;主要原因一个是之前太忙了&#xff0c;把项目都忙完了&#xff0c;赶上春节假期&#xff0c;就慢慢研究。Spring Security的体系非常复杂&#xff0c;一口吃不了热豆腐&#xff0c;没办法速成&#xff0c;…

仰暮计划|“​他们艰苦半生,但真的希望祖国安祥,山河无恙”

自述&#xff0c;自赎 我没有在那个年代生活过&#xff0c;我一出生就是盛世中国&#xff0c;看遍了祖国的大好河山。但我没想到&#xff0c;走了这么远的路&#xff0c;吃了这么多的苦的爷爷会一直跟我说“不是国家不好&#xff0c;只是中国的钱拿去还债了&#xff0c;过了那…

代码随想录算法训练营Day56|583. 两个字符串的删除操作、72. 编辑距离

目录 583. 两个字符串的删除操作 前言 思路 算法实现 法二 72. 编辑距离 前言 思路 算法实现 总结 583. 两个字符串的删除操作 题目链接 文章链接 前言 本题与上一题不同的子序列相比&#xff0c;变化就是两个字符串都可以进行删除操作了。 思路 利用动规五部曲进…

【AI视野·今日Robot 机器人论文速览 第七十九期】Thu, 18 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Thu, 18 Jan 2024 Totally 43 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers CognitiveDog: Large Multimodal Model Based System to Translate Vision and Language into Action of Quadruped Robot Aut…

哈希表 ?

哈希表 首先什么是 哈希表&#xff0c;哈希表&#xff08;英文名字为Hash table&#xff0c;国内也有一些算法书籍翻译为散列表&#xff0c;大家看到这两个名称知道都是指hash table就可以了&#xff09;。 哈希表是根据关键码的值而直接进行访问的数据结构。 这么这官方的解释…