Python----数据可视化(Seaborn三:绘图二)

ops/2025/3/15 3:31:26/

一、小提琴图

        提琴图的作用与箱形须线图类似。它显示了 数据点按一个(或多个)变量分组后的分布情况。 与箱图不同的是,每一个小提琴图都是通过对基础分布的核密度估计来绘制的。

方法

  • violinplot方法 绘制单图小提琴

  • catplot方法 绘制多图小提琴图

python">seaborn.violinplot(data=None, *, x=None, y=None, hue=None,split=False,  gap=0)
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
hue用于绘制长格式数据的输入。对原有的属性进行更加细致的分组
split显示未镜像的分布,使用 时交替使用 。
gap按此因子在方向轴上收缩,以在减淡元素之间添加间隙。
python">seaborn.catplot(data=None, *, x=None, y=None, hue=None, row=None, col=None, kind='strip')
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
hue用于绘制长格式数据的输入。对原有的属性进行更加细致的分组
row定义子集以在不同 facet 上绘制的变量。
col定义子集以在不同 facet 上绘制的变量。
kind要绘制的绘图类型对应于分类的名称 轴级绘图功能。选项有: “strip”, “swarm”, “box”, “violin”, “boxen”、“point”、“bar” 或 “count”。
python">import seaborn as sns
import pandas as pdtips=pd.read_csv('tips.csv')
sns.violinplot(x="day", y="total_bill", data=tips,hue="smoker",fill=False,split=True,gap=0.1)  # 设置间隔
sns.catplot(x="day", y="total_bill", data=tips,hue="smoker",kind="violin",col="sex")

二、热力图

方法

  • heatmap方法

python">seaborn.heatmap(data, *, vmin=None, vmax=None, cmap=None,annot=None, linewidths=0, cbar=True)
函数描述
data可以强制转换为 ndarray 的 2D 数据集。如果 Pandas DataFrame 时,索引/列信息将用于标记 列和行。
vminvalues 来锚定颜色图,否则它们将从 data 和其他关键字参数
vmaxvalues 来锚定颜色图,否则它们将从 data 和其他关键字参数
camp从数据值到色彩空间的映射。如果未提供,则 default 将取决于是否设置。
annot如果为 True,则在每个单元格中写入数据值。如果具有 与 相同形状,则改用此函数来注释热图 的数据。请注意,DataFrames 将匹配位置,而不是索引。
linewidth将划分每个单元格的线的宽度。
cbar是否绘制颜色条。
python">import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pdflights = pd.read_csv('flights.csv')
data=flights.pivot(index='month',columns='year',values='passengers')
sns.heatmap(data,annot=True,fmt='d',linewidths=.5,cbar=True,vmin=200,vmax=400)

  

三、点图

        点图用于探索和比较两个分类变量之间的关系

主要特点和使用场景包括:

  1. 中心趋势的表示: 点图通过在坐标轴上的点表示每个组别的中心趋势,通常是均值。这使得你可以直观地比较不同组别的中心位置。

  2. 不确定性的展示: 除了点的位置表示中心趋势外,点图还通过垂直线(误差棒)表示中心趋势的不确定性,通常是置信区间。这有助于了解估计值的精度。

  3. 适用于两个分类变量: 点图的主要用途是比较两个分类变量之间的关系。一个分类变量通常用于横轴,另一个分类变量用于纵轴

方法

  • pointplot方法

  • catplot方法

python">seaborn.pointplot(data=None, *, x=None, y=None, hue=None,markers=<default>, linestyles=<default>,dodge=False)
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
hue用于绘制长格式数据的输入。对原有的属性进行更加细致的分组
markers用于每个级别的标记
linestyles用于每个级别的线条样式。
dodge将变量的每个级别的点分隔的 amount 分类轴。设置为 将应用较小的默认值。
python">seaborn.catplot(data=None, *, x=None, y=None, hue=None, row=None, col=None, kind='strip')
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
hue用于绘制长格式数据的输入。对原有的属性进行更加细致的分组
row定义子集以在不同 facet 上绘制的变量。
col定义子集以在不同 facet 上绘制的变量。
kind要绘制的绘图类型对应于分类的名称 轴级绘图功能。选项有: “strip”, “swarm”, “box”, “violin”, “boxen”、“point”、“bar” 或 “count”。
markers用于每个级别的标记
linestyles用于每个级别的线条样式。
dodge将变量的每个级别的点分隔的 amount 分类轴。设置为 将应用较小的默认值。
python">import seaborn as sns
import matplotlib.pyplot as plttips = pd.read_csv('tips.csv')sns.pointplot(x="day", y="total_bill", data=tips,hue='sex',markers=['o','s'],linestyles=['-','--'],dodge=True)

python">sns.catplot(x="day", y="total_bill", data=tips,hue='sex',markers=['o','s'],linestyles=['-','--'],dodge=True,kind='point',col='smoker')

 

四、核密度图

核密度估计图是一种用于估计概率密度函数的非参数方法

核密度估计图可以帮助理解数据的分布情况,尤其在连续变量的情况下,它提供了一种平滑的、连续的概率密度估计

主要特点和作用包括:

  1. 连续概率密度估计: 核密度估计图通过在每个数据点周围放置核(通常是高斯核)来估计连续概率密度函数。这样,我们可以看到整个变量范围内的概率密度变化

  2. 平滑曲线: 生成的图表是一条平滑的曲线,反映了数据的整体趋势。相对于直方图,核密度估计提供了更连续、更平滑的概率密度表示

  3. 用于多变量分布: 核密度估计图也可以用于可视化多个变量的联合分布情况

方法

  • kdeplot方法 核密度图

  • displot方法 支持多组、多图

python">seaborn.kdeplot(data=None, *, x=None, y=None, hue=None, palette=None,  fill=None, multiple='layer')
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
hue用于绘制长格式数据的输入。对原有的属性进行更加细致的分组
palette选择映射语义时要使用的颜色的方法。 字符串值将传递给 .列表或字典值 隐含分类映射,而 colormap 对象隐含数值映射。
fill如果为 True,则填充单变量密度曲线下或之间的区域 二元等值线。如果为 None,则默认值取决于 。
multiple在语义映射创建子集时绘制多个元素的方法。 仅与单变量数据相关。
python">import seaborn as snstips = pd.read_csv('tips.csv')sns.kdeplot(data=tips, x="total_bill", hue="sex",multiple="stack",alpha=.5,linewidth=0,palette="Blues",fill=True)
python">seaborn.displot(data=None, *, x=None, y=None, hue=None, row=None, col=None,kind='kde)
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
hue用于绘制长格式数据的输入。对原有的属性进行更加细致的分组
row定义子集以在不同 facet 上绘制的变量。
col定义子集以在不同 facet 上绘制的变量。
kind可视化数据的方法。选择基础绘图函数 并确定其他有效参数集。

 

python">sns.displot(data=tips, x="total_bill", y="tip",fill=True,kind='kde',col='time')

五、回归图

线性回归图是用于可视化线性回归分析结果的图表。它通常包括散点图、回归线和误差条,以便直观地展示自变量和因变量之间的线性关系。线性回归图的主要组成部分包括:

  1. 散点图(Scatter Plot): 在图中绘制了自变量和因变量的散点,每个点代表一个观测数据。散点图帮助我们直观地观察变量之间的分布和可能的关系

  2. 回归线(Regression Line): 通过回归分析,得到了一条最佳拟合的直线,它代表了自变量和因变量之间的线性关系。回归线的斜率表示了这种关系的方向和强度

  3. 误差条(Error Bars): 误差条通常在每个点附近绘制,用于表示每个观测值的误差范围。这有助于了解拟合程度和数据的离散程度

  4. 回归方程信息: 可能包括回归方程、截距、斜率等信息,以提供更详细的模型解释

方法

  • sns.regplot方法

  • sns.lmplot方法 支持分组、分图

注意

可能需要安装 statsmodels模块,安装完模块要重启当前的ipynb文件环境

pip install statsmodels

python">seaborn.regplot(data=None, *, x=None, y=None, marker='o', scatter_kws=None)
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
marker用于散点图字形的标记。
sactter_kws要传递给 和 的其他关键字参数。plt.scatterplt.plot
python">seaborn.lmplot(data, *, x=None, y=None, hue=None, col=None, row=None)
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
hue用于绘制长格式数据的输入。对原有的属性进行更加细致的分组
row定义子集以在不同 facet 上绘制的变量。
col定义子集以在不同 facet 上绘制的变量。
python">sns.regplot(data=tips,x='tip',y='total_bill',scatter_kws={'s':50,'alpha':0.3,'color':'skyblue'},marker='s')

 

python">sns.lmplot(data=tips,x='tip',y='total_bill',hue='sex',col='time')

六、联合图

方法

  • jointplot方法

python">seaborn.jointplot(data=None, *, x=None, y=None, hue=None, kind='scatter',marginal_kws=None)
函数描述
data用于绘图的数据集。
x用于绘制长格式数据的输入。
y用于绘制长格式数据的输入。
hue用于绘制长格式数据的输入。对原有的属性进行更加细致的分组
kind

scatter,kde,hist,reg,hex,resid

marginal_kwsplot 组件的其他关键字参数。
python">sns.jointplot(data=tips,x='tip',y='total_bill')
sns.jointplot(data=tips,x='tip',y='total_bill',kind='scatter') # kind='scatter' 散点图
sns.jointplot(data=tips,x='tip',y='total_bill',kind='kde') # 盒密度
sns.jointplot(data=tips,x='tip',y='total_bill',kind='hist') # 直方图
sns.jointplot(data=tips,x='tip',y='total_bill',kind='reg') # 回归图+直方图
sns.jointplot(data=tips,x='tip',y='total_bill',kind='hex') # 六角+直方图
sns.jointplot(data=tips,x='tip',y='total_bill',kind='resid') # 残差+直方图
sns.jointplot(data=tips,x='tip',y='total_bill',hue='sex',palette='dark:red',kind='hist',marginal_kws={'fill':False,'bins':10})

 

七、成队绘图

方法

        pairplot方法

python">seaborn.pairplot(data, *, hue=None, vars=None, diag_kind='auto')
函数描述
data用于绘图的数据集。
hue分组
vars变量 中的变量,否则将每列与 数值数据类型。
diag_kind对角线子图的 Kind plot。如果为 'auto'
python">sns.pairplot(data=tips,vars=["total_bill","tip"],hue="smoker",kind='scatter')
sns.pairplot(data=tips,vars=["total_bill","tip"],hue="smoker",kind='hist',  # 设置除中线图形类型diag_kind='kde', # 设置中线图形类型) 

 

八、绘制图表到子图

python">import seaborn as sns
from matplotlib import pyplot as plt
import pandas as pdtips = pd.read_csv('tips.csv')fig,ax= plt.subplots(2,2,figsize=(20,8)) 
sns.lineplot(x="total_bill", y="tip", data=tips, ax=ax[0,0])
sns.lineplot(x="size", y="tip", data=tips, ax=ax[0][1])

九、使用FacetGrid绘图

参数描述对应使用了FacetGrid函数
plt.plot/sns.lineplot折线图sns.relplot(kind='line')
plt.hexbin六边形图sns.jointplot(kind='hex')
plt.hist/sns.histplot直方图sns.distplot()
plt.scatter/sns.scatterplot散点图sns.relplot(kind='scatter')
sns.stripplot分类散点图sns.catplot(kind='strip')
sns.swarmplot分散分类散点图sns.catplot(kind='swarm')
sns.boxplot箱图sns.catplot(kind='box')
sns.violinplot小提琴图sns.catplot(kind='violin')
sns.pointplot点线图sns.catplot(kind='point')
sns.barplot条图sns.catplot(kind='bar')
sns.countplot数量统计条图sns.catplot(kind='count')
sns.regplot回归线图sns.lmplot()
其它其它其它
python">import seaborn as sns
import pandas as pd
tips=pd.read_csv('tips.csv')

绘制单图表 

python">g = sns.FacetGrid(tips)
g.map(sns.scatterplot, "total_bill", "tip")
g.map(sns.regplot, "total_bill", "tip")

绘制多组图表

python">g = sns.FacetGrid(tips,col="time",row="smoker",hue='sex',palette="Set1", # 设置颜色height=4, aspect=1.5, # 设置大小hue_kws={"marker": ["*", "s"]}, # 设置标记) 
g.map(sns.regplot, "total_bill", "tip")


http://www.ppmy.cn/ops/165469.html

相关文章

DeepLabv3+改进8:在主干网络中添加SIM注意力机制|助力涨点

🔥【DeepLabv3+改进专栏!探索语义分割新高度】 🌟 你是否在为图像分割的精度与效率发愁? 📢 本专栏重磅推出: ✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化 ✅ 即插即用模块:ASPP+升级、解码器 PS:订阅专栏提供完整代码 论文简介 在本文中,我们提出了…

SpringMVC (一)基础

目录 SpringMVC 一 简单使用 1 新建模块选择指定参数 2 创建实现类 3 将项目启动 4 运行结果&#xff1a;在浏览器当中响应执行 二 RequestMapping 三 请求限定 SpringMVC SpringMVC是Spring的web模块&#xff0c;用来开发Web应用&#xff0c;SpringMVC应用最终作为B/…

【git】补丁文件

项目中总有一些本地修改是既不能上传到远程分支又不能直接加入到.gitignore文件中的。 固然可以使用stash但它毕竟只是一种临时保存更改的机制&#xff0c;更适用于本地开发过程中需要频繁切换任务的场景。 如果想要共享代码更改&#xff0c;那还是补丁文件更合适一些。git d…

【C++指南】一文总结C++类和对象【下】

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C类和对象的语法知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享…

Spring Boot 项目开发流程全解析

目录 引言 一、开发环境准备 二、创建项目 三、项目结构 四、开发业务逻辑 1.创建实体类&#xff1a; 2.创建数据访问层&#xff08;DAO&#xff09;&#xff1a; 3.创建服务层&#xff08;Service&#xff09;&#xff1a; 4.创建控制器层&#xff08;Controller&…

volatile 在 JVM 层面的实现机制

一、JVM 内存模型&#xff08;JMM&#xff09;与 volatile 的语义 Java 内存模型&#xff08;JMM&#xff09;定义了多线程环境下变量的访问规则&#xff0c;而 volatile 关键字通过以下两种语义实现线程安全&#xff1a; 可见性&#xff1a;对 volatile 变量的写操作会立即刷…

车载以太网测试-8【网络层】-IP协议路由协议

目录 1 摘要2 车载以太网网络层介绍2.1 IP协议&#xff08;Internet Protocol&#xff09;2.1.1 IP帧结构2.1.2 IP地址 2 路由协议2.1 静态路由2.2 动态路由 3 总结 1 摘要 车载以太网&#xff08;Automotive Ethernet&#xff09;是一种专门为汽车应用设计的以太网技术&#…

第七章:Qt 实践

第七章&#xff1a;Qt 实践 在深入了解 Qt 框架的各个模块之后&#xff0c;本章将通过几个实际案例&#xff0c;展示如何将 Qt 的强大功能应用于真实项目开发中。我们将结合界面设计、信号与槽机制、网络通信和数据处理等内容&#xff0c;探索 Qt 在桌面应用程序开发中的实际应…