Python 中 三种常用的绘图方式 ! ! !
一 Matplotlib可视化
在Python中,Matplotlib是一个功能强大的绘图库,特别是其Pyplot模块,提供了类似于MATLAB的绘图接口,使得用户可以轻松绘制各种2D图表。下面我们将详细介绍使用Matplotlib进行可视化的基本步骤以及常用图形的绘制方法。
步骤
- 创建画板和坐标轴对象
- 使用Matplotlib时,首先需要创建一个图形(画板)和坐标轴对象。但在简单的绘图中,这一步通常是隐式完成的。
- 绘制指定的图形
- 使用Pyplot提供的各种函数绘制图形,如线图、散点图、条形图、直方图、饼图等。
- 设置坐标轴值、网格、标题等
- 可以通过Pyplot提供的函数设置坐标轴的标签、范围、网格线、图表的标题和注释等。
- 画图
- 使用
plt.show()函数显示图表。
- 使用
涉及到的图形
- hist():用于绘制直方图,展示数据的分布情况。
- scatter():用于绘制散点图,显示两个变量之间的关系。
- plot():最常用的函数之一,用于绘制线图和散点图。
- bar():用于绘制垂直条形图和水平条形图,展示不同类别的数据对比。
- pie():用于绘制饼图,显示各部分在总体中所占的比例。
- imshow():用于绘制图像,特别是热力图或图像数据。
- subplots():用于创建子图,即在一个图形窗口中绘制多个图表。
示例
状态接口方式
下面是一个使用状态接口方式绘制简单线图的示例:
import matplotlib.pyplot as plt # 1. 准备x轴 和 y轴的数据.
x = [-3, 5, 7] # x轴坐标
y = [1, 4, 9] # y轴坐标 # 2. 绘制线图
plt.plot(x, y) # 3. 设置坐标轴标签和标题
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Simple Line Plot') # 4. 画图
plt.show()
参数了解
plot() 函数是Matplotlib中最基础也是最常用的函数之一,其参数非常灵活,支持多种格式和选项。
- x, y:点的坐标或线的节点,可以是列表或数组。
- fmt:可选,定义基本格式,如颜色、标记和线条样式。
- **kwargs:可选,用于设置其他属性,如标签、线宽等。
颜色字符如 'b' 表示蓝色,'r' 表示红色等;线型参数如 '-' 表示实线,'--' 表示破折线等;标记字符如 'o' 表示实心圈,'.' 表示点等。
二 Pandas自带绘图功能
Pandas是一个强大的Python数据分析库,它内置了基于Matplotlib的绘图功能,使得数据分析师和科学家能够方便地对数据进行可视化。Pandas的绘图功能通过DataFrame或Series对象的.plot方法实现,提供了多种图表类型来满足不同的数据可视化需求。
格式
Pandas的绘图功能非常直观,其基本格式如下:
df对象.plot.图形名(参数)
# 或者
Series对象.plot.图形名(参数)
这里的df对象是指Pandas的DataFrame对象,而Series对象则是指Pandas的Series对象。图形名指的是你想要绘制的图表类型,如bar、line、area等。参数则是用于自定义图表的各种选项,如大小、字体、颜色等。
常用参数
- figsize:用于设置图表的大小,格式为
(宽, 高),单位为英寸。 - fontsize:用于设置图表中字体的大小。
- color:用于设置图表中元素的颜色,可以是颜色的缩写(如'r'代表红色),也可以是颜色的十六进制表示(如'#FF0000'也代表红色)。
常用图形
- bar():绘制条形图,展示不同类别的数据对比。
- line():绘制线图,展示数据随时间或其他连续变量的变化趋势。
- area():绘制面积图,与线图类似,但下方区域会被填充颜色,常用于显示累计数据。
- pie():绘制饼图,展示各部分在总体中所占的比例。
- hist():绘制直方图,展示数据的分布情况。
- scatter():绘制散点图,显示两个变量之间的关系。
示例
假设我们有一个Pandas DataFrame df,它包含了某产品的月销量数据:
import pandas as pd
import numpy as np # 创建一个示例DataFrame
np.random.seed(0)
data = {'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
'Sales': np.random.randint(100, 300, 6)}
df = pd.DataFrame(data) # 绘制条形图
df.plot.bar(x='Month', y='Sales', figsize=(10, 6), fontsize=14, color='skyblue') # 显示图表
plt.show()
在这个示例中,我们首先导入了pandas和numpy库,并创建了一个包含月份和销量的DataFrame。然后,我们使用.plot.bar()方法绘制了一个条形图,其中x='Month'指定了x轴为月份,y='Sales'指定了y轴为销量,figsize=(10, 6)设置了图表的大小,fontsize=14设置了字体大小,color='skyblue'设置了条形的颜色。最后,我们使用plt.show()显示了图表。
注意:在Pandas的绘图示例中,我们通常还需要导入Matplotlib的pyplot模块(import matplotlib.pyplot as plt),因为Pandas的绘图功能是基于Matplotlib实现的,尽管在Pandas的绘图方法中不需要显式调用plt.show()来显示图表(Pandas的.plot()方法内部已经调用了它),但在某些情况下(如需要自定义图表显示顺序时),我们仍然需要显式地调用plt.show()。然而,为了保持示例的简洁性,上述示例中并没有显式导入pyplot模块。在实际应用中,请确保已经正确导入了所需的模块。
三 Seaborn绘图
Seaborn(简称sns)是一个基于matplotlib的高级绘图库,它提供了一个更高级的接口来绘制各种吸引人的统计图形。Seaborn旨在使绘图变得更加简单,同时产生更美观和更复杂的图表。以下是关于如何使用Seaborn进行可视化的一些详细指导,包括常用的图形类型、设置图形样式和风格的步骤。
图形名
- histplot():绘制直方图,展示数据的分布情况。
- kdeplot():绘制核密度估计图,用于展示数据的连续分布。
- countplot():绘制计数图(条形图),展示不同类别的计数。
- scatterplot():绘制散点图,展示两个变量之间的关系。
- regplot():绘制回归图,展示两个变量之间的线性关系。参数
fit_reg=True表示绘制回归线。 - jointplot():绘制联合分布图,展示两个变量的分布及其关系。参数
kind='hex'表示使用六边形分箱(hexbin)来显示密度。 - boxplot():绘制箱线图,展示数据的分布情况,包括中位数、四分位数等统计量。
- violinplot():绘制小提琴图,与箱线图类似,但更侧重于显示数据的分布密度。参数
hue用于分组数据,split=True表示在分组的情况下将小提琴图分开显示。
绘图基本格式
import seaborn as sns
import matplotlib.pyplot as plt # 假设df是已经存在的DataFrame
fig, ax = plt.subplots(figsize=(宽, 高)) # 创建图形和坐标轴对象
sns.图形名(data=df对象, x='x轴数据', y='Y轴数据', ...) # 绘制图形
ax.set_title('标题') # 设置标题
plt.show() # 显示图形
风格和样式
Seaborn提供了几种不同的绘图风格和样式,可以通过sns.set_style('风格名')来设置。
- white:纯白色背景,无网格线。
- whitegrid:白色背景,带有网格线。
- dark:暗色背景,无网格线。
- darkgrid:暗色背景,带有网格线。
- ticks:与whitegrid类似,但网格线更细。
示例
import seaborn as sns
import matplotlib.pyplot as plt # 设置绘图风格
sns.set_style('darkgrid') # 假设tips是一个已经存在的DataFrame
fig, ax = plt.subplots(figsize=(10, 6))
sns.scatterplot(data=tips, x='total_bill', y='tip', hue='day')
ax.set_title('Tips by Day and Total Bill')
plt.show()
在这个示例中,我们首先设置了绘图风格为darkgrid,然后创建了一个图形和坐标轴对象。接着,我们使用sns.scatterplot()绘制了一个散点图,其中data=tips指定了数据源,x='total_bill'和y='tip'分别指定了x轴和y轴的数据列,hue='day'表示根据day列的不同值对散点进行分组和着色。最后,我们设置了图表的标题并显示了图表。
相关文章:
Python 中 三种常用的绘图方式 ! ! !
一 Matplotlib可视化 在Python中,Matplotlib是一个功能强大的绘图库,特别是其Pyplot模块,提供了类似于MATLAB的绘图接口,使得用户可以轻松绘制各种2D图表。下面我们将详细介绍使用Matplotlib进行可视化的基本步骤以及常用图形的…...
统一回复OneAPI:failed to get gpt-3.5-turbo token encoder的解决办法
源码方式安装后启动OneAPI时提示failed to get gpt-3.5-turbo token encode,缺少编码文件的解决办法。 1、编辑encoding.go文件 vim /root/go/pkg/mod/github.com/pkoukk/tiktoken-gov0.1.7/encoding.go 注意:tiktoken-gov0.1.7要根据实际情况&#x…...
Flash Attention是怎么做到又快又省显存的?
Flash Attention 并没有减少 Attention 的计算量,也不影响精度,但是却比标准的Attention运算快 2~4 倍的运行速度,减少了 5~20 倍的内存使用量。究竟是怎么实现的呢? Attention 为什么慢? 此处的“快慢”是相对而言的…...
CAN报文ID过滤
在CAN通信中,CAN_FILTERMODE_LIST和CAN_FILTERMODE_MASK是用于CAN过滤器配置的两种不同过滤模式。 1. CAN_FILTERMODE_LIST: - 当CAN过滤器使用CAN_FILTERMODE_LIST模式时,过滤器将匹配通过滤器的标识符列表中的任何一个标识符。换句话说…...
ELK-05-skywalking监控SpringCloud服务日志
文章目录 前言一、引入依赖二、增加日志配置文件三、打印日志四、skywalking网页查询链路五、日志收集5.1 修改logback-spring.xml5.2 重启SpringCloud服务并请求test接口5.3 查看skywalking网页的Log 总结 前言 基于上一章节,现在使用skywalkin监控SpringCloud服务…...
17年数据结构考研真题解析
第一题: 解析: 我们说递归要找出口,这道题的出口是sum<n,经过观察可以得知:sum123。。。k 设第k次循环跳出,则有sum123。。。k<n k<,很显然答案选B 第二题: 解析: 第一句&a…...
nginx 安装(Centos)
nginx 安装-适用于 Centos 7.x [rootiZhp35weqb4z7gvuh357fbZ ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.9.2009 (Core) Release: 7.9.2009 Codename: Core# 创建文件…...
异步编程利器:深入解析 Python 异步并发库 Gevent
在现代 Python 应用开发中,并发编程 是提高程序性能、处理多个任务的关键手段之一。虽然 Python 有原生的多线程、多进程模块,但这些模块存在一些限制,比如全局解释器锁(GIL)会影响多线程程序的执行效率。此外…...
Python pyusb 使用指南【windows+linux】
前言:USB(通用串行总线)作为一种高度通用性的硬件接口,在诸多领域均有应用。在C中可以直接使用libusb库即可完成USB设备信息查询、USB设备监听、与USB设备控制端点、数据(同步、批量、中断)端点进行指令、数据交互等功能。python中…...
Xcode报错:The request was denied by service delegate (SBMainWorkspace)
Xcode报错:The request was denied by service delegate (SBMainWorkspace) 造成的原因: (1)新的M2芯片的Mac电脑 (2) 此电脑首次安装启动Xcode的应用程序 (3)此电脑未安装Rosetta 解决方法: (1)打开终端…...
面试系列-携程暑期实习一面
Java 基础 1、Java 中有哪些常见的数据结构? 图片来源于:JavaGuide Java集合框架图 Java 中常见的数据结构包含了 List、Set、Map、Queue,在回答的时候,只要把经常使用的数据结构给说出来即可,不需要全部记住 如下&…...
你以为建站很复杂?Baklib 5分钟解决你的痛点
你以为建站很复杂?Baklib 5分钟解决你的痛点! 在这个“快节奏”的互联网时代,想要快速搭建一个网站是很多人的刚需。今天我要介绍的,就是如何利用Baklib的CMS/Wiki模板,五分钟内让你的网站“横空出世”。废话不多说&am…...
极狐GitLab 17.4 重点功能解读【二】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
LVS-DR实战案例,实现四层负载均衡
环境准备:三台虚拟机(NET模式或者桥接模式) 192.168.88.200 (web1)(安装nginx服务器作为测试) 192.168.88.201 (服务器)(用于部署lvs-dr) 192.168.88.202 (web2)…...
网游和3A类型游戏的CPU选择分析
目录 1. CPU性能基础 1.1 主频 1.2 三级缓存(L1、L2、L3缓存) 1.3 架构 1.4 单核与多核性能 2. 游戏类型分析 2.1 网游:以《永劫无间》为例 多核性能需求: 单核性能需求: CPU选择建议: 2.2 3A类…...
2024免费录屏软件的宝藏功能与实用技巧
在手机上操作很多时候为了记录方便都直接截图或者录屏,其实电脑也一样。现在面向电脑的录屏工具纷繁复杂,很容易让我们挑花了眼。今天这篇文章我将介绍几款免费的录屏软件为大家提供参考。 1.福昕录屏大师 链接达达:www.foxitsoftware.cn/R…...
linux---进程程序替换详解
提示:以下是本篇文章正文内容,下面案例可供参考 一、程序替换的原理 我们可以创建子进程通过程序替换,来执行不同的程序。程序替换不会重新创建子进程,我们通过程序替换函数,内核将磁盘中的可执行程序和数据加载到内存…...
笔试编程-百战成神——Day01
1.数字统计 题目来源:数字统计——牛客网 测试用例 算法原理 根据题目我们知道,首先要输出两个数字确定一个区间,寻找这个区间内数字中所有包含2的个数,比如12包含一个2,22包含两个2,以此类推,所以我们的…...
Qt+toml文件读写
Qttoml 使用 cpptoml 库示例Qt 项目中的代码示例 解释注意事项 在Qt中使用TOML(Tom’s Obvious, Minimal Language)格式的文件,可以通过第三方库来实现,例如 cpptoml。TOML是一种易于阅读和写入的配置文件格式,与JSON…...
浅谈C++之指针
一、基本介绍 在C中,指针是一种复杂的数据类型,它存储了另一个变量的内存地址。通过指针,程序可以直接访问和操作内存,这为编程提供了极大的灵活性和效率,但同时也增加了复杂性和潜在的错误风险。 二、指针的概念 指针…...
GA/T 1400视图库实战:从零部署Easy1400平台到设备级联全流程解析
1. 初识GA/T 1400与Easy1400平台 第一次接触GA/T 1400标准时,我完全被各种专业术语绕晕了。简单来说,这是一套专门针对视频监控领域的行业标准,规定了视频图像信息在采集、传输、存储等环节的技术要求。而Easy1400就是基于这个标准开发的一套…...
【ZYNQ】AXI4总线协议实战:从握手时序到PS-PL高效通信
1. AXI4总线协议基础:从握手信号到通道架构 第一次接触ZYNQ的PS-PL通信时,我被AXI4协议里那些VALID/READY信号搞得头晕眼花。直到在示波器上抓到真实的握手波形,才突然理解这个看似复杂的协议其实像极了我们日常的对话机制——只有当说话方准…...
ComfyUI Video Combine节点3个核心技巧:解决视频合并常见问题
ComfyUI Video Combine节点3个核心技巧:解决视频合并常见问题 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 在AI动画创作中,ComfyUI的Vi…...
VHD2VL终极指南:5分钟快速将VHDL转换为Verilog的免费工具
VHD2VL终极指南:5分钟快速将VHDL转换为Verilog的免费工具 【免费下载链接】vhd2vl 项目地址: https://gitcode.com/gh_mirrors/vh/vhd2vl 在FPGA和ASIC设计领域,VHDL转Verilog是许多工程师面临的共同挑战。手动转换不仅耗时费力,还容…...
安全聚合技术:原理、实现与多场景应用
1. 安全聚合技术概述安全聚合(Secure Aggregation)是一种多方安全计算技术,它允许多个互不信任的参与方在不泄露各自私有数据的前提下,共同计算出一个聚合结果。这项技术的核心价值在于解决了数据隐私与数据共享之间的矛盾&#x…...
猫抓插件:5分钟掌握浏览器资源嗅探的终极武器
猫抓插件:5分钟掌握浏览器资源嗅探的终极武器 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容无处不在的今天,你…...
轻量级工作流引擎pro-workflow:Go语言实现与实战解析
1. 项目概述:一个为专业开发者量身打造的工作流引擎如果你是一名开发者,尤其是经常需要处理复杂业务逻辑、数据流转或自动化任务的后端或全栈工程师,那么你一定对“工作流”这个概念不陌生。从简单的审批流到复杂的微服务编排,工作…...
用C++和RealSense D435i搞个3D手势识别?从像素坐标到相机坐标的保姆级避坑指南
3D手势识别实战:用RealSense D435i实现像素到相机坐标的高精度转换 当你的手指在空气中划出一道弧线,计算机能否精准捕捉这个三维动作?这正是3D手势识别技术试图解决的问题。作为人机交互领域的前沿方向,3D手势识别正在VR游戏、医…...
MedAgentBench:大语言模型在医学诊断中的动态评估与智能体构建实践
1. 项目概述:当大语言模型成为医学诊断的“实习生”最近在医学人工智能的圈子里,一个名为MedAgentBench的项目引起了我的注意。它来自斯坦福大学机器学习组,这个名字本身就自带光环。简单来说,这不是一个直接看病的AI,…...
从零解析开源API网关fiGate:架构设计与生产实践
1. 项目概述:从零解析一个开源API网关最近在梳理团队内部微服务治理方案时,我又重新审视了市面上各类API网关的实现。除了大家耳熟能详的Kong、APISIX、Tyk这些“明星产品”,其实在GitHub的海洋里,还藏着不少设计精巧、思路独特的…...
