matplotlib绘图
介绍

在官网上有更多种类的图型的绘制方法
matpoltlib中文官方文档:例子_Matplotlib 中文网
matpoltlib英文官方文档:Examples — Matplotlib 3.8.1 documentation
分类
一、折线图
1、要实现的功能:

2、实例:
# 导入包
from matplotlib import pyplot as plt
#这句话还可以用:from matplotlib import pyplot as plt# 创建数据
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]
y2 = [1, 0, 11, 12, 13, 14, 3, 10, 1, 1, 1, 2]# 设置图片尺寸和清晰度,dpi表示分辨率,即每英寸的点数,默认80
plt.figure(figsize=(20, 8), dpi=200)# 绘制折线图
plt.plot(x, y, label='line_1')
plt.plot(x, y2, label='line_2', color='r', linestyle="--", linewidth=5, alpha=0.5)#设置线颜色、线条样式、线条宽度、线条透明度# 设置曲线标签;需要先在plot函数中设置label参数,
plt.legend() # 默认标签显示在右上角;对参数loc赋值可使label显示在不同位置# 设置x、y轴刻度(数字的情况下)
xticks_labels = [i/2 for i in range(2, 50)]
plt.xticks(xticks_labels)
plt.yticks(range(0, max(y)+1))
# 设置x、y刻度(字符串情况下);传入两个参数,都为列表形式,两个列表对应;rotation代表旋转角度
plt.xticks(xticks_labels, [f"No.{i}" for i in xticks_labels], rotation = 45)# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')# 设置网格
plt.grid()
# plt.grid(alpha = 0.2) #参数alpha表示网格透明度# 保存图片
plt.savefig("./t1.png")
plt.savefig("./t2.svg") # .svg矢量图格式,放大不会有锯齿# 显示图形
plt.show()
3、逐句解释:
(1)导入包
# 导入包
from matplotlib import pyplot as plt
#这句话还可以用:from matplotlib import pyplot as plt
(2)创建数据
# 创建数据
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]
y2 = [1, 0, 11, 12, 13, 14, 3, 10, 1, 1, 1, 2]
(3)设置图片尺寸和清晰度,dpi表示分辨率,即每英寸的点数,默认80
# 设置图片尺寸和清晰度,dpi表示分辨率,即每英寸的点数,默认80
plt.figure(figsize=(20, 8), dpi=200)
(4)绘制折线图,plot中,参数可以设置:“ 线条颜色、线条样式、线条宽度、线条透明度 ”
# 绘制折线图
plt.plot(x, y, label='line_1')
plt.plot(x, y2, label='line_2', color='r', linestyle="--", linewidth=5, alpha=0.5)#设置线颜色、线条样式、线条宽度、线条透明度
(5)在一个表中显示多个折线图,多次调用plot函数绘图即可,可用 legend 生成图例,不同折线标签是由 plot 中的 label 参数设置,legend 中参数可设置标签的各项特点。
# 设置曲线标签;需要先在plot函数中设置label参数,
plt.legend() # 默认标签显示在右上角;对参数loc赋值可使label显示在不同位置
(6)设置x、y轴的刻度,数字情况是传入一个列表参数,字符串情况是传入两个相互对应的列表参数
# 设置x、y轴刻度(数字的情况下)
xticks_labels = [i/2 for i in range(2, 50)]
plt.xticks(xticks_labels)
plt.yticks(range(0, max(y)+1))
# 设置x、y刻度(字符串情况下);传入两个参数,都为列表形式,两个列表对应;rotation代表旋转角度
plt.xticks(xticks_labels, [f"No.{i}" for i in xticks_labels], rotation = 45)
(7)设置标题和x、y轴标签
# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
(8)设置网格,alpha参数代表网格透明度,范围0-1
# 设置网格
plt.grid()
# plt.grid(alpha = 0.2) #参数alpha表示网格透明度
(9)保存图片,svg矢量图格式可以防止放大图线后出现模糊
# 保存图片
plt.savefig("./t1.png")
plt.savefig("./t2.svg") # .svg矢量图格式,放大不会有锯齿
(10)显示图线
# 显示图形
plt.show()
二、散点图
将 plot() 换成 scatter() 即可。其余与折线图完全一样。
三、条形图
1、竖着的条形图
from matplotlib import pyplot as plta = ["no1", "no2", "no3", "no4", "no5", "no6", "no7", "no8", "no9"]
b = [56.1, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11]# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)# 绘制条形图
plt.bar(range(len(a)), b, width=0.3)# 设置字符串到x轴
plt.xticks(range(len(a)), a, rotation=90)plt.show()
2、横着的条形图
from matplotlib import pyplot as plta = ["no1", "no2", "no3", "no4", "no5", "no6", "no7", "no8", "no9"]
b = [56.1, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11]# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)# 绘制条形图
plt.barh(range(len(a)), b, height=0.3)# 设置字符串到x轴
plt.yticks(range(len(a)), a)plt.show()
3,区别
(1)竖图和横图用的绘图函数分别为 bar() 和 barh() ,
(2)若竖图设置的是x轴,其对应的横图就应该设置y轴。
(3)竖图设置条的宽度用width参数,横图用height参数
四、直方图
用 hist() 绘制直方图,参数density默认为False,表示绘制频率分布直方图,设置为True 表示绘制概率分布直方图(面积归一化)
from matplotlib import pyplot as plta = [112,134,173,156,88,93,140,150,130,133,122,123,132,145,154,154,154,123,165,147,99,95,149,120,123,93,92,154,123,134,135,154,153,133,122,123,154,145,134,145,164,163,162,166,126,134,143,155,156,167,133,134,155,159,158,138,139,134,137,147,148,149,133,134,144,134,143,133,170,167,145,123,134,165,122,102,101,100,102,103,103,104,105,106,107,148,109,112,113,114,115,112,111,111,110,114,113,123,133,116]d = 5 # 组距
num_bins = (max(a)-min(a))//d
print(len(a), max(a), min(a), max(a)-min(a))
print(num_bins)# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
plt.hist(a, num_bins, density=True) # density设置为True表示概率分布直方图(面积归一化),默认density为False,为频率分别直方图# 设置x轴刻度
plt.xticks(range(min(a), max(a)+d, d))plt.grid()plt.show()

hist() 中第二个参数若为一个数字num,则代表平均分为num组,若为一个列表,则可以按照列表分组,这个列表中的数代表的并不是比例,而是横坐标的数字,如将上代码中的 hist() 的第二个参数改为 [60,70,80,90,100,125,155,160,170,180],可得到:

此时应更改横坐标也为[60,70,80,90,100,125,155,160,170,180]

相关文章:
matplotlib绘图
介绍 在官网上有更多种类的图型的绘制方法 matpoltlib中文官方文档:例子_Matplotlib 中文网 matpoltlib英文官方文档:Examples — Matplotlib 3.8.1 documentation 分类 一、折线图 1、要实现的功能: 2、实例: # 导入包 from…...
QT使用Socket与安卓Socket互发消息
背景:安卓设备通过usb网络共享给Linux,此时安卓设备与linux处于同一网络环境,符合使用socket的条件,linux做客户端,安卓做服务端 1.QT使用Socket (1).在工程文件中加入 QT network (2).导包以及写一些槽函数用做数据传输与状态接收 #ifndef MAINWINDOW_H #define MAINWINDOW…...
Redis05-集群方案
目录 Redis集群方案 主从复制 主从复制的基本原理 主从复制的工作流程 乐观复制 主从复制的优势 哨兵机制 哨兵的关键作用 服务状态监控 哨兵选举Master规则 分片集群 分片集群中的数据读写 数据写入 数据读取 一致性哈希和客户端分片 Redis集群方案 微服务时代…...
故障演练的关键要素及重要性
故障演练是一种有计划的、模拟真实生产环境故障的活动。通过故意引入故障、模拟系统组件失效或模拟其他异常条件,团队可以观察并评估系统在这些情况下的反应。这有助于发现潜在的问题、改进应急响应和提高系统整体的可用性。 一、故障演练的关键要素 计划性…...
11月15日,每日信息差
今天是2023年11月15日,以下是为您准备的12条信息差 第一、去哪儿正式启动鸿蒙原生应用开发 第二、最高支持千亿向量规模,腾讯云向量数据库全面升级,同时和信通院一起联合50多家企业共同发布了国内首个向量数据库标准,推进向量数…...
java-关于alibaba的JSON.parseArray注意事项
String resultStr dataStrJosnObject.get("result").toString();JSONArray resultArray JSON.parseArray(resultStr);resultStr 格式是[{},{},{}] resultArray 的size是3 获取第一个{}字符串,使用resultArray.get(0) 获取第二哥个{}字符串,使…...
软文推广中媒体矩阵的优势在哪儿
咱们日常生活中是不是经常听到一句俗语,不要把鸡蛋放在同一个篮子里,其实在广告界这句话也同样适用,媒介矩阵是指企业在策划广告活动时,有目的、有计划的利用多种媒体进行广告传播,触达目标用户。今天媒介盒子就来和大…...
xss总结
xss注入总结 漏洞描述 XSS(跨站脚本攻击)是一种常见的网络安全漏洞,攻击者利用该漏洞在网页中插入恶意脚本,以获取用户的敏感信息或执行恶意操作。 XSS中文叫做跨站脚本攻击(Cross-site scripting)&…...
【MySQL学习】常见命令
数据库操作 (1)查询所有数据库名字 show databases;(2)常见数据库 create database db_name; //create if exist create database if exists databaseName;(3)删除数据库 drop database db_name;表格操…...
汽车ECU的虚拟化技术初探(二)
目录 1.概述 2.U2A虚拟化方案概述 3.U2A的虚拟化功能概述 4.虚拟化辅助功能的使能 5.留坑 1.概述 在汽车ECU的虚拟化技术初探(一)-CSDN博客里,我们聊到虚拟化技术比较关键的就是vECU的虚拟地址翻译问题,例如Cortex-A77就使用MMU来进行虚实地址的转换…...
vue3 el-menu初始化时选中没有高亮的问题(default-active和index的问题)
首先看官方文档的示例: 需要注意的是: 1、default-active的值是字符串,那么index绑定的值也要是字符串,且数字对应。不能default-avtive绑定的是1,而menu-item的index绑定的是45 2、default-active的值是当前选中me…...
Vue的class、style绑定
Vue中的样式也要回到原始的BOMDOMjs的前端组合去解读。 1、当模板直接引用style中定义的样式时,在HTML模板中按照正常的样式引用处理即可。 模板定义:<template> <div class"sizeclass">100</div> </template><st…...
day22_mysql
今日内容 零、 复习昨日 一、MySQL 一、约束 1.1 约束 是什么? 约束,即限制,就是通过设置约束,可以限制对数据表数据的插入,删除,更新 怎么做? 约束设置的语法,大部分是 create table 表名( 字段 数据类型(长度) 约束, 字段 数据类型(长度) 约束 );1.1 数据类型 其实数据类型…...
【VBA】基于EXCEL生成Insert语句工具
前言 基于Excel生成INSERT语句工具是为了解决在数据库中插入大量数据时手动编写INSERT语句繁琐和耗时的问题而开发的辅助工具。在软件开发和数据库管理等领域,测试数据是非常重要的,它可以用于测试和验证数据库的性能、功能和准确性。 手动编写INSERT语…...
算法与数据结构--前缀和
一维前缀和适用于计算某个一维数列某个数到某个数之间的累加和(或者乘积,又或者异或和)之类的。 比如计算某个一维度数列从i到j之间元素的和。最开始的想法就是从i遍历到j,将这之间的元素相加。但是当查询次数很多时候࿰…...
高频CSS面试题
给大家推荐一个实用面试题库 1、前端面试题库 (面试必备) 推荐:★★★★★ 地址:web前端面试题库 BFC 块级格式上下文(block format context)是页面一块独立的渲染区域,具有一套独立的渲染规则 内部的…...
electron 内部api capturePage实现webview截图
官方文档 .capturePage([rect]) rect Rectangle (可选) - 要捕获的页面区域。 返回 Promise - 完成后返回一个NativeImage 在 rect内捕获页面的快照。 省略 rect 将捕获整个可见页面。 async function cap(){ let image await webviewRef.value.capturePage() console.log(im…...
sql9(Leetcode197上升的温度)
代码: inner join 至少存在一个 返回行 datediff 日期差 # Write your MySQL query statement below SELECT b.id FROM Weather a INNER JOIN Weather b WHERE DATEDIFF(b.recordDate,a.recordDate)1 AND b.Temperature>a.Temperature...
物联网AI MicroPython学习之语法 umqtt客户端
学物联网,来万物简单IoT物联网!! umqtt 介绍 模块功能: MQTT客户端功能 - 连线、断线、发布消息、订阅主题、KeepAlive等功能。 MQTT协议采用订阅者/发布者模式,协议中定义了消息服务质量(Quality of Service&#x…...
SQLite3 数据库学习(二):SQLite 中的 SQL 语句详解
参考引用 SQLite 权威指南(第二版)SQLite3 入门 1. SQL 语句操作 SQLite 数据库 1.1 创建数据表格 create table 表名(字段名 数据类型, 字段名 数据类型, 字段名 数据类型, 字段名 数据类型); 命令行语句结束要加分…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
TI德州仪器TPS3103K33DBVR低功耗电压监控器IC电源管理芯片详细解析
1. 基本介绍 TPS3103K33DBVR 是 德州仪器(Texas Instruments, TI) 推出的一款 低功耗电压监控器(Supervisor IC),属于 电源管理芯片(PMIC) 类别,主要用于 系统复位和电压监测。 2. …...
