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

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集群方案 微服务时代…...

故障演练的关键要素及重要性

故障演练是一种有计划的、模拟真实生产环境故障的活动。通过故意引入故障、模拟系统组件失效或模拟其他异常条件,团队可以观察并评估系统在这些情况下的反应。这有助于发现潜在的问题、改进应急响应和提高系统整体的可用性。 一、故障演练的关键要素 计划性&#xf…...

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中定义的样式时&#xff0c;在HTML模板中按照正常的样式引用处理即可。 模板定义&#xff1a;<template> <div class"sizeclass">100</div> </template><st…...

day22_mysql

今日内容 零、 复习昨日 一、MySQL 一、约束 1.1 约束 是什么? 约束,即限制,就是通过设置约束,可以限制对数据表数据的插入,删除,更新 怎么做? 约束设置的语法,大部分是 create table 表名( 字段 数据类型(长度) 约束, 字段 数据类型(长度) 约束 );1.1 数据类型 其实数据类型…...

【VBA】基于EXCEL生成Insert语句工具

前言 基于Excel生成INSERT语句工具是为了解决在数据库中插入大量数据时手动编写INSERT语句繁琐和耗时的问题而开发的辅助工具。在软件开发和数据库管理等领域&#xff0c;测试数据是非常重要的&#xff0c;它可以用于测试和验证数据库的性能、功能和准确性。 手动编写INSERT语…...

算法与数据结构--前缀和

一维前缀和适用于计算某个一维数列某个数到某个数之间的累加和&#xff08;或者乘积&#xff0c;又或者异或和&#xff09;之类的。 比如计算某个一维度数列从i到j之间元素的和。最开始的想法就是从i遍历到j&#xff0c;将这之间的元素相加。但是当查询次数很多时候&#xff0…...

高频CSS面试题

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 BFC 块级格式上下文(block format context)是页面一块独立的渲染区域&#xff0c;具有一套独立的渲染规则 内部的…...

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上升的温度)

代码&#xff1a; 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客户端

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; umqtt 介绍 模块功能: MQTT客户端功能 - 连线、断线、发布消息、订阅主题、KeepAlive等功能。 MQTT协议采用订阅者/发布者模式&#xff0c;协议中定义了消息服务质量&#xff08;Quality of Service&#x…...

SQLite3 数据库学习(二):SQLite 中的 SQL 语句详解

参考引用 SQLite 权威指南&#xff08;第二版&#xff09;SQLite3 入门 1. SQL 语句操作 SQLite 数据库 1.1 创建数据表格 create table 表名(字段名 数据类型&#xff0c; 字段名 数据类型&#xff0c; 字段名 数据类型&#xff0c; 字段名 数据类型); 命令行语句结束要加分…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; 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 是 德州仪器&#xff08;Texas Instruments, TI&#xff09; 推出的一款 低功耗电压监控器&#xff08;Supervisor IC&#xff09;&#xff0c;属于 电源管理芯片&#xff08;PMIC&#xff09; 类别&#xff0c;主要用于 系统复位和电压监测。 2. …...