百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

我用Python的Seaborn库,绘制了15个超好看图表!

off999 2024-10-02 18:43 16 浏览 0 评论

大数据文摘受权转载自法纳斯特
Seaborn是一个基于Python语言的数据可视化库,它能够创建高度吸引人的可视化图表。
在Matplotlib库的基础上,提供了更为简便的API和更为丰富的可视化函数,使得数据分析与可视化变得更加容易。
Seaborn的设计哲学是以美学为中心,致力于创建最佳的数据可视化。
同时也保持着与Python生态系统的高度兼容性,可以轻松集成到Python数据分析以及机器学习的工作流程中。
今天,小F就给大家介绍如何使用Seaborn制作15种不同类型的可视化图表。
具体图表类型,包含条形图、散点图、直方图、折线图、小提琴图、箱线图、热力图、点图、密度图、计数图、分簇散点图、特征图、Facet Grid、联合分布图、分类图。
首先使用pip安装Seaborn。
pip install seaborn
Seaborn提供了一些内置的数据集,如iris、tips、dots、glue等。
你可以在GitHub上看到更多的数据集。
https://github.com/mwaskom/seaborn-data
这里我们使用的是Seaborn的Iris数据集。
Iris也称鸢尾花数据集,是一类多重变量分析的数据集。
通过花萼长度、花萼宽度、花瓣长度、花瓣宽度4个属性来预测鸢尾花属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
import matplotlib.pyplot as pltimport seaborn as snsimport pandas as pd
print('\n')data = pd.read_csv('iris.csv')print(data[10:15])
结果如下。
查看不同种类数量情况。
print(data['species'].value_counts())
结果如下。
01. 柱状图

柱状图通常被用于表示分类变量,它只显示平均值(或其他参数值)。
为了使用这个图,为x轴选择一个分类列(物种),为y轴选择一个数值列(花瓣长度)。
sns.barplot(x='species', y='petal_length', hue='species', data=data)plt.show()
可以看到创建了一个每个分类列取平均值的图。
花瓣长度与物种间关系的条形图(基于鸢尾数据集)。
02. 散点图
散点图是由几个数据点组成的图。
使用x轴表示花瓣长度,y轴表示数据集的萼片长度,制作散点图。
sns.scatterplot(x='petal_length', y='sepal_length', hue='species', style='species', s=90, data=data)plt.show()
结果如下。
在这里,我们看到不同物种的花瓣长度和萼片长度之间有很强的关系。
03. 直方图
直方图通常用于可视化单个变量的分布,不过也可用于比较两个或更多变量的分布。
除了直方图之外,KDE参数还可以用来显示核密度估计(KDE)。
这里使用鸢尾花数据集的萼片长度来制作直方图。
sns.histplot(x='sepal_length', kde=True, data=data)plt.show()
结果如下。
两个变量的直方图。
sns.histplot(x='sepal_length', kde=True, hue='species', data=data)plt.show()
结果如下。
04. 折线图
折线图是一种通用的图表,可以用来可视化各种不同的关系。
该图表易于创建和分析,并且可以用于有效地交流数据。
在折线图中,每个数据点都是由直线连接。
这里在x轴上使用花瓣长度,在y轴上使用花瓣宽度。
sns.lineplot(x='petal_length', y='petal_width', data=data)plt.show()
结果如下。
05. 小提琴图
小提琴图表示数据的密度,类似于散点图,并像箱线图一样表示分类数据。
数据的密度越大的区域越胖。小提琴形状表示数据的核密度估计,形状在每个点的宽度表示该点的数据密度。
这里使用x轴表示物种,y轴表示花瓣长度。
sns.violinplot(x='species', y='petal_length', data=data, hue='species')plt.show()
结果如下。
06. 箱线图
箱线图由一个箱形图和两个须状图组成。
它表示四分位数范围(IQR),即第一和第三四分位数之间的范围。中位数由框内的直线表示。
晶须从盒子边缘延伸到最小值和最大值的1.5倍IQR。
异常值是落在此范围之外的任何数据点,并单独显示。
这里使用x轴表示种数,y轴表示萼片长度。
sns.boxplot(x='species', y='sepal_length', data=data, hue='species')plt.show()
结果如下。
07. 热力图
热力图是数据的二维可视化表示,使用颜色来显示变量的值。
热力图经常用于显示数据集中的各种变量的关联关系,使用corr方法来实现。
heat_corr = data.corr()sns.heatmap(heat_corr, annot=True)plt.show()
结果如下。
08. 点线图
点线图是一种统计图表,用于显示一组数据及其变异性的平均值或集中趋势。
点线图通常用于探索性数据分析,以快速可视化数据集的分布或比较多个数据集。
本例中的每个数据点表示为单个点,而水平线表示平均值。
sns.pointplot(x='species', y='petal_length', data=data, markers='^', color='g')plt.show()
结果如下。
09. 密度图
密度图通过估计连续随机变量的概率函数来表示数据集的分布,也称为核密度估计(KDE)图。
sns.kdeplot(x='petal_length', data=data, hue='species', multiple='stack')plt.show()
结果如下。
上图可以清晰的看出花瓣长度与物种之间的关系。
还可以修改密度图的显示方式,和等高线有点像。
sns.kdeplot(x='petal_length', y='sepal_length', data=data, hue='species')plt.show()
结果如下。
10. 计数图
计数图是一种分类图,它显示了分类变量的每个类别中观测值的计数。
它本质上是一个柱状图,其中每个柱的高度代表特定类别的观测值的数量。
计算数据集中每个物种的样本总数。
sns.countplot(x='species', data=data)plt.show()
结果如下。
从上图可以看出,每个物种在数据集中包含相同数量的样本。
11. 分簇散点图
分簇散点图和条形图挺相似的。
不同之处在于,这些点会重叠出现,这样有助于更好地表示值的分布情况。
sns.swarmplot(x='sepal_width', y='species', data=data, hue='species', dodge=True, orient='h', size=8)plt.show()
结果如下。
在上图中,每个数据点表示为一个点,并且这些点的排列使得它们在分类轴上不会相互重叠。
在这里,所有萼片宽度数据点以不同的方式代表每个物种的一个点。
12. 特征图
特征图可视化了数据集中变量之间的两两关系。
创建了一个坐标轴网格,将所有数值数据点将在彼此之间创建一个图,在x轴上具有单列,y轴上具有单行。
对角线图是单变量分布图,它绘制了每列数据的边际分布。
sns.set(rc={"figure.figsize": (6, 3)})sns.pairplot(data=data, hue='species')plt.show()
结果如下。
上图表示鸢尾花数据集中所有变量之间的关系。
13. FacetGrid
Seaborn中的FacetGrid函数将数据集的一个或多个分类变量作为输入,然后创建一个图表网格,每种类别变量的组合都有一个图表。
网格中的每个图都可以定制为不同类型的图,例如散点图、直方图或箱形图,具体取决于要可视化的数据。
在这里,制作了每个物种花瓣长度的图表。
g = sns.FacetGrid(data, col="species", height=4, hue='species')g.map(sns.histplot, "petal_length")plt.show()
结果如下。
14. 联合分布图
联合分布图将两个不同类型的图表组合在一个表中,展示两个变量之间的关系(二元关系)。
sns.jointplot(x="sepal_length", y="sepal_width", data=data, palette='Set2', hue='species')plt.show()
结果如下。
在上面的图表中,中间区域绘制了散点图,边侧则是密度图。
15. 分类图
cat图(分类图缩写)是Seaborn中的一种图表,可以用来可视化数据集中一个或多个分类变量与连续变量之间的关系。
它可用于显示分布、比较组或显示不同变量之间的关系。
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()
结果如下。
这里可以看出鸢尾数据集中花瓣长度与物种之间的关系。
好了,今天的分享到此就结束了~
Seaborn作为一个强大的可视化模块,在数据分析机器学习有很大的作用。
但其功能远不止上述内容,如果想更加深入了解,可以访问其官网地址或者中文文档。



租!AI云资源
新上线一批A100/A800
运营商机房,服务有保障

扫码了解详情?





相关推荐

面试官:来,讲一下枚举类型在开发时中实际应用场景!

一.基本介绍枚举是JDK1.5新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错...

一日一技:11个基本Python技巧和窍门

1.两个数字的交换.x,y=10,20print(x,y)x,y=y,xprint(x,y)输出:102020102.Python字符串取反a="Ge...

Python Enum 技巧,让代码更简洁、更安全、更易维护

如果你是一名Python开发人员,你很可能使用过enum.Enum来创建可读性和可维护性代码。今天发现一个强大的技巧,可以让Enum的境界更进一层,这个技巧不仅能提高可读性,还能以最小的代价增...

Python元组编程指导教程(python元组的概念)

1.元组基础概念1.1什么是元组元组(Tuple)是Python中一种不可变的序列类型,用于存储多个有序的元素。元组与列表(list)类似,但元组一旦创建就不能修改(不可变),这使得元组在某些场景...

你可能不知道的实用 Python 功能(python有哪些用)

1.超越文件处理的内容管理器大多数开发人员都熟悉使用with语句进行文件操作:withopen('file.txt','r')asfile:co...

Python 2至3.13新特性总结(python 3.10新特性)

以下是Python2到Python3.13的主要新特性总结,按版本分类整理:Python2到Python3的重大变化Python3是一个不向后兼容的版本,主要改进包括:pri...

Python中for循环访问索引值的方法

技术背景在Python编程中,我们经常需要在循环中访问元素的索引值。例如,在处理列表、元组等可迭代对象时,除了要获取元素本身,还需要知道元素的位置。Python提供了多种方式来实现这一需求,下面将详细...

Python enumerate核心应用解析:索引遍历的高效实践方案

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。根据GitHub代码分析统计,使用enumerate替代range(len())写法可减少38%的索引错误概率。本文通过12个生产...

Python入门到脱坑经典案例—列表去重

列表去重是Python编程中常见的操作,下面我将介绍多种实现列表去重的方法,从基础到进阶,帮助初学者全面掌握这一技能。方法一:使用集合(set)去重(最简单)pythondefremove_dupl...

Python枚举类工程实践:常量管理的标准化解决方案

本文通过7个生产案例,系统解析枚举类在工程实践中的应用,覆盖状态管理、配置选项、错误代码等场景,适用于Web服务开发、自动化测试及系统集成领域。一、基础概念与语法演进1.1传统常量与枚举类对比#传...

让Python枚举更强大!教你玩转Enum扩展

为什么你需要关注Enum?在日常开发中,你是否经常遇到这样的代码?ifstatus==1:print("开始处理")elifstatus==2:pri...

Python枚举(Enum)技巧,你值得了解

枚举(Enum)提供了更清晰、结构化的方式来定义常量。通过为枚举添加行为、自动分配值和存储额外数据,可以提升代码的可读性、可维护性,并与数据库结合使用时,使用字符串代替数字能简化调试和查询。Pytho...

78行Python代码帮你复现微信撤回消息!

来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。[导读]Python曾经对我说:"时日不多,赶紧用Python"。于是看...

登录人人都是产品经理即可获得以下权益

文章介绍如何利用Cursor自动开发Playwright网页自动化脚本,实现从选题、写文、生图的全流程自动化,并将其打包成API供工作流调用,提高工作效率。虽然我前面文章介绍了很多AI工作流,但它们...

Python常用小知识-第二弹(python常用方法总结)

一、Python中使用JsonPath提取字典中的值JsonPath是解析Json字符串用的,如果有一个多层嵌套的复杂字典,想要根据key和下标来批量提取value,这是比较困难的,使用jsonpat...

取消回复欢迎 发表评论: