不管是在论文的撰写过程中还是实际工作中,数据可视化是一项至关重要的技能,清晰、直观的图表不仅能够帮助读者快速理解数据背后的信息,还能提升项目的整体质量,Seaborn 作为一个基于 Matplotlib 的高级数据可视化库,以其简洁的语法和强大的功能,成为众多研究者和数据科学家的首选工具,本篇文章将详细介绍 Seaborn 的 15 种常用图表(条形图 散点图 直方图 线性图 小提琴图 箱线图 热力图 点图 密度图 计数图 分簇散点图 配对图 Facet Grid 联合分布图 分类图),并结合具体实例,展示如何有效应用这些图表,帮助你更好地呈现数据和结论
代码实现
数据加载
import seaborn as sns
import matplotlib.pyplot as plt
data=sns.load_dataset('iris')
data.head()
使用了Python中的Seaborn和Matplotlib库,加载鸢尾花数据集,为可视化提供数据支撑
条形图
plt.figure(figsize=(15,5),dpi=300)
sns.barplot(x='species',y='petal_length',hue='species',data=data)
plt.show()
条形图用于表示分类变量,它只显示平均值(或其他估计值),为x轴选择一个分类列,为y轴(花瓣长度)选择一个数值列,它创建了一个为每个分类列取平均值的图
散点图
plt.figure(figsize=(15,5),dpi=300)
sns.scatterplot(x='petal_length',y='sepal_length',hue='species',style='species',s=90,data=data)
plt.show()
使用Seaborn的scatterplot函数创建了一个散点图,参数x表示x轴上的数据-花瓣长度;参数y表示y轴上的数据-萼片长度;参数hue表示用于分组的数据-鸢尾花的种类,不同种类用不同颜色表示;参数style表示用于不同种类的不同样式-鸢尾花的种类;参数s表示散点的大小;参数data是传入的数据集
直方图
plt.figure(figsize=(15,5),dpi=300)
sns.histplot(x='sepal_length',kde=True,data=data)
plt.show()
直方图通常用于可视化单个变量的分布,但它们也可用于比较两个或更多变量的分布,除了直方图之外,KDE参数还可以用来显示核密度估计(KDE)。这里使用萼片长度
plt.figure(figsize=(15,5),dpi=300)
sns.histplot(x='sepal_length',kde=True,hue='species',data=data)
plt.show()
Seaborn的histplot函数支持创建一个带有多个组别的直方图,参数x表示绘制直方图的变量-萼片长度;参数kde=True表示在直方图上添加核密度估计;参数hue表示用于分组的数据-鸢尾花的种类
线性图
plt.figure(figsize=(15,5),dpi=300)
sns.lineplot(x='petal_length',y='petal_width',data=data)
plt.grid(True)
plt.show()
Seaborn 的 lineplot 函数支持创建线图,参数 x 表示 x 轴上的数据-花瓣长度;参数 y 表示 y 轴上的数据-花瓣宽度
小提琴图
plt.figure(figsize=(15,5),dpi=300)
sns.violinplot(x='species',y='petal_length',data=data,hue='species')
plt.show()
Seaborn 的 violinplot 函数支持创建小提琴图,参数 x 表示 x 轴上的数据-鸢尾花的种类;参数 y 表示 y 轴上的数据-花瓣长度;参数 data 是传入的数据集;参数 hue 表示用于分组的数据-鸢尾花的种类,小提琴图展示了每个类别中数据的分布情况,类似于箱线图,小提琴图还可以表示数据的密度,数据的密度越大的区域越胖
箱线图
plt.figure(figsize=(15,5),dpi=300)
sns.boxplot(x='species',y='sepal_length',data=data,hue='species')
plt.show()
箱形图由一个箱形图和两个须状图组成,它表示四分位数范围(IQR),即第一和第三四分位数之间的范围,中位数由框内的直线表示,须状图从盒边缘延伸到最小值和最大值的1.5倍IQR,异常值是落在此范围之外的任何数据点,并会单独显示出来
热力图
heat_corr=data.iloc[:,0:4].corr()
sns.heatmap(heat_corr,annot=False)
plt.show()
热力图是数据的二维可视化表示,它使用颜色来显示变量的值,热力图经常用于显示数据集中的各种因素如何相互关联,比如皮尔逊相关系数,这里计算了相关系数矩阵并进行绘制,参数annot=True可在画布中展示实际值
点图
plt.figure(figsize=(15,5),dpi=300)
sns.pointplot(x='species',y='petal_length',data=data,markers ='^',color='g')
plt.show()
点图是一种统计图表,用于显示一组数据及其变异性的平均值或集中趋势,点图通常用于探索性数据分析,可以快速可视化数据集的分布或比较多个数据集
密度图
plt.figure(figsize=(15,5),dpi=300)
sns.kdeplot(x='petal_length',data=data,hue='species',multiple='stack')
plt.show()
密度图通过估计连续随机变量的概率函数来表示数据集的分布,也称为核密度估计(KDE)图,Seaborn 的 kdeplot 函数支持创建核密度估计图,参数 x 表示 x 轴上的数据-花瓣长度;参数 data 是传入的数据集;参数 hue 表示用于分组的数据-鸢尾花的种类;参数 multiple='stack' 表示将核密度估计堆叠在一起,以更清晰地显示不同组别的分布
plt.figure(figsize=(15,5),dpi=300)
sns.kdeplot(x='petal_length',y='sepal_length',data=data,hue='species')
plt.show()
Seaborn 的 kdeplot 函数还支持创建二维核密度估计图,参数 x 表示 x 轴上的数据-花瓣长度;参数 y 表示 y 轴上的数据-萼片长度;参数 data 是传入的数据集;参数 hue 表示用于分组的数据-鸢尾花的种类
计数图
plt.figure(figsize=(15,5), dpi=300)
ax = sns.countplot(x='species', data=data)
for p in ax.patches:
ax.annotate(format(p.get_height(), '.0f'),
(p.get_x() + p.get_width() / 2., p.get_height()),
ha = 'center', va = 'center',
xytext = (0, 9),
textcoords = 'offset points')
plt.show()
计数图是一种分类图,它显示了分类变量的每个类别中观测值的计数,它本质上是一个柱状图,其中每个柱的高度代表特定类别的观测值的数量,这里作者人为定义展示每个柱状的实际数量,读者自行取舍
分簇散点图
plt.figure(figsize=(15,5), dpi=300)
sns.swarmplot(x='sepal_width',y='species',data=data,hue='species',dodge=True,orient='h',size=8)
plt.show()
分簇散点图与条形图相似,但是它会修改一些点以防止重叠,这有助于更好地表示值的分布,在该图中,每个数据点表示为一个点,并且这些点的排列使得它们在分类轴上不会相互重叠
配对图
plt.figure(figsize=(15,5), dpi=300)
sns.set(rc = {"figure.figsize":(6,3)})
sns.pairplot(data=data,hue='species')
plt.show()
配对图可视化了数据集中几个变量之间的成对关系,它创建了一个坐标轴网格,这样所有数值数据点将在彼此之间创建一个图,在x轴上具有单列,y轴上具有单行,对角线图是单变量分布图,它绘制了每列数据的边际分布
Facet Grid
plt.figure(figsize=(15,5), dpi=300)
g=sns.FacetGrid(data, col="species",height=4,hue='species')
g.map(sns.histplot, "petal_length")
plt.show()
Seaborn中的FacetGrid函数将数据集和一个或多个分类变量作为输入,并创建一个图表网格,每种类别变量的组合都有一个图表,网格中的每个图都可以定制为不同类型的图,例如散点图、直方图或箱形图
联合分布图
plt.figure(figsize=(15,5), dpi=300)
sns.jointplot(x="sepal_length", y="sepal_width", data=data,
palette='Set2',hue='species')
plt.show()
联合分布图将两个不同的图组合在一个表示中,可以展示两个变量之间的关系(二元关系)
分类图
sns.catplot(data=data, x="petal_length", y="species", kind="violin", color=".9", inner=None)
sns.swarmplot(data=data, x="petal_length", y="species", size=3)
plt.show()
cat图(分类图的缩写)是Seaborn中的定制的一种图,它可以可视化数据集中一个或多个分类变量与连续变量之间的关系。它可用于显示分布、比较组或显示不同变量之间的关系, 使用 catplot 函数创建了一个小提琴图,其中横轴表示花瓣长度,纵轴表示鸢尾花的种类。通过 kind="violin" 参数指定了绘制小提琴图, color=".9" 参数设置了小提琴图的颜色为浅灰色, inner=None 参数去除了小提琴图内部的盒图, 接着使用 swarmplot 函数创建一个蜂群图,以更清晰地显示每个数据点,在蜂群图中,每个点表示一个观测值,颜色表示鸢尾花的种类,而它们的水平位置表示花瓣长度,通 过这两个图的结合,可以更全面地了解不同种类鸢尾花的花瓣长度分布情况
往期推荐
Pythorch框架构建Attention-lstm时序模型
利用python meteostat库对全球气象数据访问,获取历史气象数据
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考