利用Seaborn实现高级统计图表—python可视化

2024-04-29 17:04

本文主要是介绍利用Seaborn实现高级统计图表—python可视化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

👽发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。

利用 Seaborn 实现高级统计图表

在数据可视化领域,Seaborn 是 Python 中一个备受欢迎的库。它建立在 Matplotlib 之上,提供了一种更简单的方式来创建漂亮的统计图表。Seaborn 不仅可以绘制常见的统计图表,还支持许多高级功能,如分布图、热图、聚类图等。本文将介绍如何利用 Seaborn 实现一些高级统计图表,并附上代码实例。

安装 Seaborn

首先,确保你已经安装了 Seaborn。如果没有,可以通过 pip 安装:

pip install seaborn

导入 Seaborn 和其他必要的库

在开始之前,让我们先导入 Seaborn 和其他需要的库:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

1. 分布图

分布图是显示单变量分布情况的有效方式。Seaborn 提供了多种方式来绘制分布图,其中之一是 displot 函数。让我们通过一个例子来演示如何绘制一个正态分布的直方图和密度图:

data = np.random.normal(loc=0, scale=1, size=1000)
sns.displot(data, kind="hist", kde=True)
plt.title("Normal Distribution")
plt.show()

2. 热图

热图是一种用颜色编码矩阵数值的图表类型,通常用于显示相关性矩阵或者二维数据集。Seaborn 中的 heatmap 函数可以轻松地创建热图。下面是一个简单的示例,展示了一个相关性矩阵的热图:

data = np.random.rand(10, 10)
sns.heatmap(data, annot=True, cmap="YlGnBu")
plt.title("Correlation Heatmap")
plt.show()

3. 聚类图

聚类图是一种将数据点按照它们的相似性分组的图表类型。Seaborn 中的 clustermap 函数可以帮助我们创建聚类图。下面是一个简单的例子,展示了如何绘制一个聚类图:

data = np.random.rand(10, 10)
sns.clustermap(data, cmap="viridis")
plt.title("Cluster Map")
plt.show()

4. 箱线图和小提琴图

箱线图和小提琴图都是用于展示数据分布的有效方式。箱线图显示了数据的中位数、上下四分位数和异常值,而小提琴图则以核密度估计为基础,展示了数据的分布情况。Seaborn 提供了 boxplotviolinplot 函数来绘制这两种图表。以下是一个比较箱线图和小提琴图的示例:

# 创建示例数据
data = np.random.normal(loc=0, scale=1, size=100)# 绘制箱线图
sns.boxplot(data=data, color='skyblue')
plt.title("Box Plot")
plt.show()# 绘制小提琴图
sns.violinplot(data=data, color='lightgreen')
plt.title("Violin Plot")
plt.show()

5. 联合分布图

联合分布图用于可视化两个变量之间的关系,并显示它们的单变量分布情况。Seaborn 提供了 jointplot 函数来创建联合分布图,支持不同的绘图风格,如散点图、核密度估计图等。以下是一个简单的例子:

# 创建示例数据
x = np.random.normal(loc=0, scale=1, size=1000)
y = np.random.normal(loc=0, scale=1, size=1000)# 绘制联合分布图
sns.jointplot(x=x, y=y, kind='hex', color='purple')
plt.title("Joint Distribution Plot")
plt.show()

6. 点图

点图用于显示一个分类变量对另一个连续变量的影响,通常用于比较不同组之间的差异。Seaborn 中的 pointplot 函数可以帮助我们绘制点图。以下是一个简单的示例,展示了不同性别在某个连续变量上的差异:

# 创建示例数据
import pandas as pd
data = pd.DataFrame({'Gender': ['Male', 'Male', 'Female', 'Female'],'Value': [10, 15, 12, 17]
})# 绘制点图
sns.pointplot(x='Gender', y='Value', data=data, ci=None, color='orange')
plt.title("Point Plot")
plt.show()

7. 多变量分布图

多变量分布图用于同时可视化多个变量之间的关系,可以帮助我们发现变量之间的复杂关系和模式。Seaborn 中的 pairplot 函数是一个强大的工具,可以绘制数据集中所有变量两两之间的关系。以下是一个简单的例子:

# 创建示例数据集
import pandas as pd
data = pd.DataFrame({'A': np.random.randn(100),'B': np.random.randn(100),'C': np.random.randn(100)
})# 绘制多变量分布图
sns.pairplot(data)
plt.suptitle("Pair Plot")
plt.show()

8. 线性关系图

线性关系图用于可视化两个变量之间的线性关系,并可以帮助我们观察到它们之间的趋势和相关性。Seaborn 中的 lmplot 函数可以绘制线性关系图,并且支持拟合线性回归模型。以下是一个简单的示例:

# 创建示例数据
x = np.random.randn(100)
y = 2 * x + np.random.randn(100)# 绘制线性关系图
sns.lmplot(x='x', y='y', data=pd.DataFrame({'x': x, 'y': y}), scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})
plt.title("Linear Relationship Plot")
plt.show()

9. 树地图

树地图是一种用于可视化层次结构数据的图表类型,它通过矩形的面积来表示不同层次的数据量。Seaborn 中没有直接支持树地图的函数,但我们可以使用 Matplotlib 来绘制。以下是一个简单的示例:

import matplotlib.pyplot as plt
import squarify    # pip install squarify# 创建示例数据
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']# 绘制树地图
plt.figure(figsize=(6, 6))
squarify.plot(sizes=sizes, label=labels, color=['red', 'green', 'blue', 'yellow'], alpha=0.7)
plt.title("Tree Map")
plt.axis('off')
plt.show()

10. 时间序列图

时间序列图是一种用于显示时间序列数据的图表类型,通常用于观察数据随时间变化的趋势和周期性。Seaborn 中的 lineplot 函数可以用于绘制时间序列图。以下是一个简单的示例:

# 创建示例时间序列数据
import pandas as pddates = pd.date_range(start='2024-01-01', end='2024-01-10')
values = np.random.randn(len(dates))# 将数据转换为 DataFrame
data = pd.DataFrame({'Date': dates, 'Value': values})# 绘制时间序列图
sns.lineplot(x='Date', y='Value', data=data, marker='o', color='green')
plt.title("Time Series Plot")
plt.xticks(rotation=45)  # 旋转 x 轴标签
plt.show()

11. 分面绘图

分面绘图是一种用于同时可视化多个子数据集的图表类型,通常用于比较不同类别或条件下的数据分布和关系。Seaborn 中的 FacetGrid 类可以用于创建分面绘图,支持按照不同的变量分割数据,并在每个子数据集上绘制相同类型的图表。以下是一个简单的示例:

# 创建示例数据集
import pandas as pddata = pd.DataFrame({'Category': ['A', 'A', 'B', 'B', 'C', 'C'],'Value': [10, 15, 20, 25, 30, 35]
})# 创建 FacetGrid 对象并绘制分面绘图
g = sns.FacetGrid(data, col='Category', col_wrap=2)
g.map(sns.histplot, 'Value', color='skyblue', bins=5)
plt.suptitle("Facet Grid Plot")
plt.show()

12. 分类数据图

分类数据图用于可视化分类变量之间的关系,通常用于比较不同类别之间的差异和分布。Seaborn 中的 catplot 函数可以用于绘制分类数据图,支持多种不同类型的图表,如柱状图、箱线图等。以下是一个简单的示例:

# 创建示例数据集
import pandas as pddata = pd.DataFrame({'Category': ['A', 'A', 'B', 'B', 'C', 'C'],'Value': [10, 15, 20, 25, 30, 35]
})# 绘制分类数据图(柱状图)
sns.catplot(x='Category', y='Value', data=data, kind='bar', palette='Set2')
plt.title("Categorical Plot")
plt.show()

13. 分布对比图

分布对比图是一种用于比较不同组之间分布情况的图表类型,可以帮助我们观察到不同组之间的差异和相似性。Seaborn 中的 histplot 函数可以用于绘制分布对比图,支持在同一个图表中同时显示多个组的分布情况。以下是一个简单的示例:

# 创建示例数据集
import pandas as pddata = pd.DataFrame({'Group': ['A'] * 100 + ['B'] * 100,'Value': np.concatenate([np.random.normal(loc=0, scale=1, size=100),np.random.normal(loc=1, scale=1, size=100)])
})# 绘制分布对比图
sns.histplot(data=data, x='Value', hue='Group', multiple='stack', kde=True, palette='husl')
plt.title("Distribution Comparison Plot")
plt.show()

14. 简单多变量图

简单多变量图是一种用于同时可视化多个变量之间关系的图表类型,通常用于观察变量之间的相关性和分布情况。Seaborn 中的 pairplot 函数可以绘制简单多变量图,支持在同一个图表中显示变量之间的散点图和单变量分布图。以下是一个简单的示例:

# 创建示例数据集
import pandas as pddata = pd.DataFrame({'A': np.random.randn(100),'B': np.random.randn(100),'C': np.random.randn(100)
})# 绘制简单多变量图
sns.pairplot(data)
plt.suptitle("Simple Multivariate Plot")
plt.show()

15. 气泡图

气泡图是一种用于显示三维数据的图表类型,通常用于展示两个变量之间的关系,并以第三个变量的大小来表示数值大小。Seaborn 中虽然没有直接支持气泡图的函数,但我们可以结合 scatterplot 函数来绘制。以下是一个简单的示例:

# 创建示例数据集
import pandas as pddata = pd.DataFrame({'X': np.random.rand(50),'Y': np.random.rand(50),'Size': np.random.rand(50) * 1000  # 设置气泡大小
})# 绘制气泡图
sns.scatterplot(data=data, x='X', y='Y', size='Size', sizes=(50, 500), legend=False)
plt.title("Bubble Plot")
plt.show()

16. 统计关系图

统计关系图是一种用于可视化两个变量之间的关系,并显示其统计摘要信息的图表类型。Seaborn 中的 jointplot 函数可以绘制统计关系图,支持不同的绘图风格,如散点图、核密度估计图等。以下是一个简单的示例:

# 创建示例数据
import pandas as pddata = pd.DataFrame({'X': np.random.randn(100),'Y': np.random.randn(100)
})# 绘制统计关系图
sns.jointplot(x='X', y='Y', data=data, kind='scatter', color='purple')
plt.suptitle("Statistical Relationship Plot")
plt.show()

17. 成对关系图

成对关系图是一种用于可视化数据集中多个变量之间的关系的图表类型,通常用于观察变量之间的相关性和分布情况。Seaborn 中的 pairplot 函数可以绘制成对关系图,支持在同一个图表中显示变量之间的散点图和单变量分布图。以下是一个简单的示例:

# 创建示例数据集
import pandas as pddata = pd.DataFrame({'A': np.random.randn(100),'B': np.random.randn(100),'C': np.random.randn(100)
})# 绘制成对关系图
sns.pairplot(data)
plt.suptitle("Pairwise Relationship Plot")
plt.show()

18. 网格图

网格图是一种用于可视化多个变量之间的关系的图表类型,通常用于观察变量之间的复杂关系和模式。Seaborn 中的 PairGrid 类可以用于创建网格图,支持在每个子数据集上绘制不同类型的图表。以下是一个简单的示例:

# 创建示例数据集
import pandas as pddata = pd.DataFrame({'A': np.random.randn(100),'B': np.random.randn(100),'C': np.random.randn(100)
})# 创建 PairGrid 对象并绘制网格图
g = sns.PairGrid(data)
g.map_upper(sns.scatterplot, color='blue')
g.map_lower(sns.kdeplot, color='green')
g.map_diag(sns.histplot, color='red')
plt.suptitle("Grid Plot")
plt.show()

总结

在本文中,我们深入探讨了如何利用 Seaborn 实现各种高级统计图表,涵盖了从基本的分布图到复杂的多变量图表。通过示例代码和详细说明,我们学习了如何使用 Seaborn 来绘制不同类型的图表,包括:

  1. 分布图:展示单变量分布情况的直方图和密度图。
  2. 热图:用颜色编码矩阵数值的图表类型,通常用于显示相关性矩阵或二维数据集。
  3. 聚类图:用于将数据点按其相似性分组的图表类型。
  4. 箱线图和小提琴图:用于展示数据分布情况的有效方式。
  5. 联合分布图:可视化两个变量之间的关系,并显示其单变量分布情况。
  6. 线性关系图:展示两个变量之间的线性关系,并支持拟合线性回归模型。
  7. 树地图:用于可视化层次结构数据的图表类型。
  8. 时间序列图:展示时间序列数据变化趋势的图表类型。
  9. 分面绘图:用于同时可视化多个子数据集的图表类型。
  10. 分类数据图:用于可视化分类变量之间关系的图表类型。
  11. 分布对比图:用于比较不同组之间分布情况的图表类型。
  12. 简单多变量图:用于同时可视化多个变量之间关系的图表类型。
  13. 气泡图:用于显示三维数据的图表类型。

这些图表类型丰富了我们的数据可视化工具箱,帮助我们更全面地探索数据,发现其中的模式和规律。通过掌握 Seaborn 的使用技巧,并将其应用到实际的数据分析和可视化工作中,我们能够更好地理解和解释数据,从而为决策提供更有力的支持。 Seaborn 的强大功能和易用性使其成为数据科学领域不可或缺的工具之一。

在这里插入图片描述

这篇关于利用Seaborn实现高级统计图表—python可视化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946649

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P