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

Matplotlib绘图从零入门到实践(含各类用法详解)

一、引入

Matplotlib 是一个Python的综合库,用于在 Python 中创建静态、动画和交互式可视化。
本教程包含笔者在使用Matplotlib库过程中遇到的各类完整实例与用法还有遇到的库理论问题,可以根据自己的需要在目录中查询对应的用法、实例以及第四部分关于理论的讨论。
教程参考了Eric Matthes的Python Crash Course中的Matplotlib部分和Matplotlib官方示例。
如果你希望了解更详细的用法和实例,可以查看Matplotlib官方网站和Python Crash Course。

二、用法部分

①基础类

1.安装Matplotlib

sudo pip install matplotlib  # in Linux

2.引用Matplotlib常用模块

import matplotlib.pyplot as plt  # 引入matplotlib的pyplot模块

3.绘制图形

values = [1, 2, 3, 4, 5]  # x值列表
squares = [1, 4, 9, 16, 25]  # y值列表
plt.plot(values, squares)  # 绘图

4.查看图形

plt.show()  # 打开matplotlib查看器,显示绘制的图形

5.保存图形

plt.savefig("file_name.png",bbox_inches="tight")#保存文件,bbox_inches可选择是否紧凑裁剪

②调节设置类

1.线宽调节

plt.plot(x, y, linewidth=5)  # 线宽设置为5

2.设置标题

Figure标题

figure标题在整个figure的上部正中。

fig.suptitle("figure_suptitle")  # 为Figure设置标题

Axes标题

ax.set_title("title")  # 为Axes设置标题

一般情况标题

对于不区分axes和figure的情况,比如一个figure里只有一个axes,以下命令也可以使用

plt.title("title", fontsize=24)  # 设置标题,字体大小设置为24

3.设置轴标签

plt.xlabel("Value", fontsize=14)  # 设置图标题x轴标签,字体大小设置为14
plt.ylabel("Square of Value", fontsize=14)  # 设置y轴标签,字体大小设置为14

4.设置轴刻度

plt.tick_params(axis="both", which="major", labelsize=14)  # 设置各轴刻度为等距,标签大小设置为14,major为应用参数的刻度组

5.隐藏坐标轴

若对图像有洁净的追求,希望隐去坐标轴,可以使用

plt.axis("off")  # 隐藏坐标轴

6.设置figure尺寸

plt.figure(figsize=(10, 6))  # 设置figure尺寸,单位为英寸

7.设置轴

ax为一个axes artist,设置x轴与y轴的限幅,并设置x轴和y轴的标签

ax.set(xlim=[0, 3], ylim=[-4, 10], xlabel='Time [s]', ylabel='Z [m]')

8.设置标签

为点设置格式化标签

需要格式化的标签时,为label添加f

scat = ax.scatter(t[0], z[0], c="b", s=5, label=f'v0 = {v0} m/s')  # 需要格式化的标签时,为label添加f

9.设置图例

ax.legend()  # 将添加过label的artists添加到四角的图例上

③数值处理类

1.生成x值和对应y值[规律]

法1:range()

和法3类似,法3更优

values = list(range(1, 101))  # list搭配range生成多个数的列表
squares = [value ** 2 for value in values]  # 根绝values生成squares

法2:numpy.linspace()

注:该方法引用Numpy库

x = np.linspace(0, 2 * np.pi, 200)  # np.linspace(起始点,终止点,采样个数)
y = np.sin(x)

法3:np.arange()

和法1类似,优势在于不用再转一次列表。
注:该方法引用Numpy库

x = np.arange(0.0, 2.0, 0.01)

2.生成x值和对应y值[随机]

④常见图形类

1.生成点

plt.scatter(values, squares, color="red", s=10)  # 绘制散点图,s为点大小,color为颜色

2.生成线

生成线的本质是生成足够多的点,使之连结,在视觉上呈现线的感觉。

x = np.linspace(0, 2 * np.pi, 200)  # 生成足够多的x
y = np.sin(x)  # 生成足够多对应的y
plt.plot(x, y)  # 绘图

⑤美化类

1.颜色映射

颜色映射可以将数值大小映射为颜色深浅,从而绘制出数值与颜色相关的图像,比如温度低的位置颜色浅,温度高的地方颜色深。

法1:数值颜色映射

plt.scatter(x, y, c=y, cmap="Reds")  # 颜色映射
# https://matplotlib.org/stable/gallery/color/colormap_reference.html#sphx-glr-gallery-color-colormap-reference-py

如果按照点的先后顺序颜色映射,需要先为规则c生成数值列表

法2:顺序颜色映射

points_number = list(range(101))  # 生成0~100的cmap顺序列表
plt.scatter(x, y, c=points_number, cmap="Blues", s=5)  # 按照顺序颜色映射

⑥动画类

在主代码中写出绘画0时刻的图的代码

三、实例部分

查看github或gitee上的实例代码

四、理论部分

1.Artist、Figure、Axes、Axis的区别

Artist

基本上,图形上可见的所有内容都是Artist,包括Figure、Axes和Axis对象。
Text对象、Line2D对象、collections对象、Patch 对象等也是Artist。
当 Figure 被渲染时,所有的 Artists 都被绘制到画布上。
大多数Artist和Axes挂钩,不能在Axes间切换也不能被Axes共享。

Figure

Figure是整个图形,可以看做窗口,一个Figure可以包含多个Axes。
Figure可以用pyplot.figure()单独创建

fig = plt.figure()  # 创建无Axes的空Figure窗口
fig, ax = plt.subplots()  # 创建带有一个Axes的Figure

Figure也可以用pyplot.subplots()和Axes一起创建。

Axes

Axes 是附加到 Figure 的 Artist,它包含一个用于绘制数据的区域。
Axes通常用pyplot.subplots()和Figure一起创建。
使用axes_name.plot()来绘制数据

fig, ax = plt.subplots()  # 创建带有一个Axes的Figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])  # 在Axes上绘制数据

一个Figure上可以有多个Axes。

fig, axs = plt.subplots(2, 2)  # 创建一个带有2X2个Axes的Figure

Axis

一个Axes通常包含两个带有刻度和刻度标签Axis,在3D情况下,一个Axes包含3个Axis,这和我们日常生活中的xyz坐标系含有x、y、z轴是相同的概念。

2.输入数据的要求

Matplotlib要求输入的数据格式为numpy的array,也就是numpy数组。

List与Array区别

list是python的内置数据类型,而 array数组需要导入numpy库,不属于内置类型。
list中的数据类不必相同的,即每个元素可以是不同的数据类型。
而array则是由numpy封装,存放的元素都是相同的数据类型。

Matrix的输入

矩阵Matrix无法直接作为数据输入,需要先通过numpy.asarray()转化为"类数组"才能输入Matplotlib

a = np.matrix([[1, 2], [3, 4]])  # a为numpy矩阵Matrix
a_asarray = np.asarray(a)  # a转化为类数组a_asarray

相关文章:

Matplotlib绘图从零入门到实践(含各类用法详解)

一、引入 Matplotlib 是一个Python的综合库,用于在 Python 中创建静态、动画和交互式可视化。 本教程包含笔者在使用Matplotlib库过程中遇到的各类完整实例与用法还有遇到的库理论问题,可以根据自己的需要在目录中查询对应的用法、实例以及第四部分关于…...

C语言 入门教程||C语言 指针||C语言 字符串

C语言 指针 学习 C 语言的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的。 …...

Nacos2.x+Nginx集群配置

一、配置 nacos 集群 注意:需要先配置好 nacos 连接本地数据库 1、拷贝三份 nacos 2、修改配置文件(cluster.conf) 修改启动端口: nacos1:8818 nacos2:8828 nacos3:8838 当nacos客户端升级为…...

Android源码分析 - InputManagerService与触摸事件

0. 前言 有人问到:“通过TouchEvent,你可以获得到当前的触点,它更新的频率和屏幕刷新的频率一样吗?”。听到这个问题的时候我感到很诧异,我们知道Android是事件驱动机制的设计,可以从多种服务中通过IPC通信…...

python库--urllib

目录 一.urllib导入 二.urllib爬取网页 三.Headers属性 1.使用build_opener()修改报头 2.使用add_header()添加报头 四.超时设置 五.get和post请求 1.get请求 2.post请求 urllib库和request库作用差不多,但比较起来request库更加容易上手,但该了…...

美团前端二面常考react面试题及答案

什么原因会促使你脱离 create-react-app 的依赖 当你想去配置 webpack 或 babel presets。 React 16中新生命周期有哪些 关于 React16 开始应用的新生命周期: 可以看出,React16 自上而下地对生命周期做了另一种维度的解读: Render 阶段&a…...

环境搭建04-Ubuntu16.04更改conda,pip的镜像源

我常用的pipy国内镜像源: https://pypi.tuna.tsinghua.edu.cn/simple # 清华 http://mirrors.aliyun.com/pypi/simple/ # 阿里云 https://pypi.mirrors.ustc.edu.cn/simple/ #中国科技大学1、将conda的镜像源修改为国内的镜像源 先查看conda安装的信息…...

【C++进阶】四、STL---set和map的介绍和使用

目录 一、关联式容器 二、键值对 三、树形结构的关联式容器 四、set的介绍及使用 4.1 set的介绍 4.2 set的使用 五、multiset的介绍及使用 六、map的介绍和使用 6.1 map的介绍 6.2 map的使用 七、multimap的介绍和使用 一、关联式容器 前面已经接触过 STL 中的部分…...

JavaSE学习进阶 day1_01 static关键字和静态代码块的使用

好的现在我们进入进阶部分的学习,看一张版图: 前面我们已经学习完基础班的内容了,现在我们已经来到了第二板块——基础进阶,这部分内容就不是那么容易了。学完第二板块,慢慢就在向java程序员靠拢了。 面向对象进阶部分…...

苹果笔可以不买原装吗?开学必备性价比电容笔

在当今的时代,电容笔日益普及,而且相关的功能也逐渐完善。因此,在使用过程中,怎样挑选一款性价比比较高的电容笔成为大家关心的焦点。随着电容笔的普及,更好更便宜的电容笔成为了一种趋势。那么,哪个品牌的…...

数据库连接与properties文件

管理properties数据库&#xff1a; 现在pom文件中加入Druid的坐标&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency>配置文件中添加相应的数据&…...

Linux上的校验和验证

校验和&#xff08;checksum&#xff09;程序用来从文件中生成相对较小的唯一密钥。我们可以重新计算该密钥&#xff0c;用以检查文件是否发生改变。修改文件可能是有意为之&#xff08;添加新用户会改变密码文件&#xff09;&#xff0c;也可能是无意而为&#xff08;从CD-ROM…...

杂记——14.git在idea上的使用及其实际开发介绍

这篇文章我们来讲一下git在idea上的使用&#xff0c;以及在实际开发过程中各个分支的使用及其具体的流程 目录 1.git在idea上的使用 1.1 idea上的git提交 1.2 idea上的分支切换 2.git在实际运用时的分支及其流程 2.1分支介绍 2.2具体流程 3.小结 1.git在idea上的使用 …...

记一次Nodejs减低npm版本的踩坑日记

使用了npm install -g npm6.4.1指令之后&#xff0c;把npm版本减低了&#xff0c;让后悲催的就来了。 由于npm 6.4.1 已经过时&#xff0c;导致运行npm时出现 npm does not support Node.js v18.14.2 版本不兼容问题 升级npm版本&#xff0c;npm install -g npmlatest 没用还是…...

【iOS】—— 初识RAC响应式编程

RAC&#xff08;ReactiveCocoa&#xff09; 文章目录RAC&#xff08;ReactiveCocoa&#xff09;响应式编程和函数式编程的区别函数式编程响应式编程响应式编程的优点RAC操作1.利用button点击实现点击事件和传值2.RACSignal用法RACSignal总结&#xff1a;3.对于label的TapGestur…...

Java——面向对象

目录 前言 一、什么是面向对象&#xff1f; 面向过程 & 面向对象 面向对象 二、回顾方法的定义和调用 方法的定义 方法的调用 三、类与对象的创建 类和对象的关系 创建与初始化对象 四、构造器详解 五、创建对象内存分析 六、封装详解 七、什么是继承&#x…...

电影《毒舌律师》观后感

上周看了《毒蛇律师》这部电影&#xff0c;讲述一位’大律师’在法庭为己方辩护&#xff0c;最终赢得辩护的故事。 &#xff08;1&#xff09;人之常情 说起法律相关&#xff0c;不禁会让人联想到讲法律相关知识的罗翔老师&#xff0c;平时也会看他相关视频&#xff0c;无论是亲…...

【活学活用掌握trap命令】

trap 命令用于指定在接收到信号后将要采取的动作&#xff0c;常见的用途是在脚本程序被中断时完成清理工作。当 shell 接收到 sigspec 指定的信号时&#xff0c; arg 参数(通常是执行命令)会被读取&#xff0c;并被执行。 1. 命令介绍 开始掌握基本的使用方式和方法 [1] 语法…...

计算机组成原理4小时速成6:输入输出系统,io设备与cpu的链接方式,控制方式,io设备,io接口,并行串行总线

计算机组成原理4小时速成6&#xff1a;输入输出系统&#xff0c;io设备与cpu的链接方式&#xff0c;控制方式&#xff0c;io设备&#xff0c;io接口&#xff0c;并行串行总线 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c…...

MyBatis源码分析(三)SqlSession的执行主流程

文章目录一、熟悉主要接口二、SqlSession的获取1、通过数据源获取SqlSession三、Mapper的获取与代理1、从SqlSession获取Mapper2、执行Mapper方法前准备逻辑3、SqlCommand的创建4、构造MethodSignature四、执行Mapper的核心方法1、执行Mapper的方法逻辑五、简单SELECT处理过程1…...

环境搭建01-Ubuntu16.04如何查看显卡信息及安装NVDIA显卡驱动

1. 查看显卡型号、驱动 ubuntu-drivers devices2. 安装NVIDIA显卡驱动 &#xff08;1&#xff09;验证是否禁用nouveau lsmod | grep nouveau若有输出&#xff0c;没有禁用&#xff0c;进行以下操作禁用。 sudo gedit /etc/modprobe.d/blacklist.conf在文件末尾中添加两条&…...

内网渗透测试理论学习之第四篇内网渗透域的横向移动

文章目录一、IPC二、HashDump三、PTH四、PTT五、PsExec六、WMI七、DCOM八、SPN九、Exchange在内网中&#xff0c;从一台主机移动到另外一台主机&#xff0c;可以采取的方式通常有文件共享、计划任务、远程连接工具、客户端等。 一、IPC IPC&#xff08;Internet Process Conn…...

20 | k8s v1.20集群搭建master和node

1 单节点master 1.1 服务器整体规划 1.2 单Master架构图 1.3 初始化配置 1.3.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld1.3.2 关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时 1.3.3 关闭swap …...

《商用密码应用与安全性评估》第一章密码基础知识1.1应用概念

密码的概念与作用 概念 密码&#xff1a;采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务。 密码技术&#xff1a;密码编码、实现、协议、安全防护、分析破译、以及密钥产生、分发、传递、使 用、销毁等技术。 密码技术核心&#xff1a;密码算法…...

【博学谷学习记录】超强总结,用心分享丨人工智能 深度学习 神经网络基础知识点总结

目录神经网络激活函数引入激活函数原因&#xff1a;sigmoid激活函数tanh 激活函数ReLU 激活函数&#xff08;最常用&#xff09;SoftMax如何选择反向传播参数初始化方法优化方法正则化批量归一层网络模型调优的思路神经网络 简单的神经网络包括三层&#xff1a;输入层&#xf…...

Python+tkinter添加滚动条

大家好&#xff0c;我是IKUN的真爱粉&#xff0c;有时候我们需要在tkinter上加滚动条&#xff0c;那么怎么制作呢&#xff0c;我们先看下面的视频展示效果&#xff0c;是不是你想要的 展示 感觉制作的略微粗糙&#xff0c;各位可以后期自己慢慢调整 创建滚动条重要的步骤是&a…...

大V龚文祥造谣董明珠恋情被禁言

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 因造谣董明珠与王自如恋情&#xff0c;知名大V龚文祥老师被今日头条禁言。龚文祥说&#xff0c;69岁的董明珠&#xff0c;找了一个小自己34岁的男友&#xff0c;引的网友议论纷纷。 2月26日&#…...

深入浅出Reactjs

深入浅出Reactjs 介绍 React是一个流行的JavaScript库&#xff0c;用于开发复杂的用户界面。它可以帮助开发人员构建灵活、高效和可维护的应用程序。本文将深入浅出地介绍React开发框架。 React的核心概念 React框架的核心概念是组件。组件是一个独立的、可复用的代码块&am…...

《C++ Primer Plus》第18章:探讨 C++ 新标准(1)

本章首先复习前面介绍过的C11功能&#xff0c;然后介绍如下主题&#xff1a; 移动语义和右值引用。Lambda 表达式。包装器模板 function。可变参数模板。 本章重点介绍 C11 对 C 所做的改进。本书前面介绍过多项 C11 功能&#xff0c;本章首先复习这些功能&#xff0c;并详细…...

PCB板漏孔、漏槽怎么办?看工程师避坑“SOP”

本文为大家介绍PCB画板时常见的钻孔问题&#xff0c;避免后续踩同样的坑。钻孔分为三类&#xff0c;通孔、盲孔、埋孔。不管是哪种孔&#xff0c;孔缺失的问题带来的后果是直接导致整批产品不能使用。因此钻孔设计的正确性尤为重要。 案例讲解 问题1&#xff1a;Altium设计的文…...

网站建设及优化教程/搜狗站长管理平台

1、什么是函数&#xff1a; 函数是一个功能、是一个行为、是一个动作。 函数就是一个具有名称的功能代码的集合。 一段用来解决某一个问题的代码或者指令&#xff0c;具有名称的集合。 2、 为什么使用函数&#xff1a; 减少代码重复&#xff01;&#xff01;&#xff01; 所…...

聊城网站制作公司/互联网线上推广

题目描述 将给出的整数x翻转。 例1:x123&#xff0c;返回321 例2:x-123&#xff0c;返回-321 你有思考过下面的这些问题么&#xff1f; 如果整数的最后一位是0&#xff0c;那么输出应该是什么&#xff1f;比如10,100 你注意到翻转后的整数可能溢出吗&#xff1f;假设输入是3…...

网站建设难么/短视频广告投放平台

MD5对一个东西加密 可以认为是不可还原的 1.客户端加密 服务端看md5是不是和数据库一致 2.服务端加密 再看和db是否一致 1的情况 网络传的是md5 2 传密码 post是怎么加密的? 有的时候 我们需要和flash交互 这就涉及到数据的交互 flash给我们提交数据 我们往处理后…...

无广告免费的影视软件/seo推广骗局

想学习土建&#xff1f;如何快速精准扎实&#xff0c;10月19日土建全日制开班&#xff0c;掌握土建造价全专业技能来源&#xff1a;钢构联盟如有侵权请联系删除金属结构工程(一)钢屋架、钢网架(1)按设计图示尺寸以钢材重量计算&#xff0c;不扣除孔眼、切边、切肢的重量&#x…...

河北做网站找谁/网络推广公司联系方式

jvm参数配置解析 参数说明-Xmx2048M JVM最大堆内存 -Xms2048M JVM最初始堆内存 -Xmn256MJVM年轻代大小&#xff08;整个堆大小年轻代大小 年老代大小 持久代大小 。持久代一般固定大小为64m&#xff09;-XX:MaxMetaspaceSize256MMaxMetaspaceSize是没有上限的&#xff0c;最…...

oss做静态网站/宁波谷歌优化

光学三维测量是什么&#xff1f; 光学三维测量时通过运动适当的光学和电子仪器非接触地获取被测物体外部形貌的方法和技术。光学三维测量是指对物体空间外形和结构进行扫描&#xff0c;以获得物体表面点的三维空间坐标的一项技术。 有什么用&#xff1f; 光学测量在工业自动检测…...