Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)

简介: Python绘图工具seaborn,教会你如何绘制更加精美的图形(二)

Hello,大家好,我是景天,今天我们探讨下seaborn根据分类数据类绘图的方法

用分类数据绘图

数据集中的数据类型有很多种,除了连续的特征变量之外,最常见的就是类别型的数据了,比如人的性别、学历、爱好等,这些数据类型都不能用连续的变量来表示,而是用分类的数据来表示。


Seaborn针对分类数据提供了专门的可视化函数,这些函数大致可以分为如下三种:


分类数据散点图: swarmplot()与 stripplot()。

类数据的分布图: boxplot() 与 violinplot()。

分类数据的统计估算图:barplot() 与 pointplot()。

下面两节将针对分类数据可绘制的图形进行简单介绍,具体内容如下


1 类别散点图

通过 stripplot()函数可以画一个散点图, stripplot0函数的语法格式如下。

seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, jitter=False)

参数解析:

x,y,hue:数据字段变量名,用于绘制长格式数据的输入

作用:根据实际数据,x,y常用来指定x,y轴的分类名称,

hue常用来指定第二次分类的数据类别(用颜色区分)


什么是长数据?

长数据一般是指数据集中的变量没有做明确的细分。即变量中至少有一个变量中的元素存在值严重重复循环的情况 (可以归为几类),如下表的北京市就重复了。表格整体的形状为长方形。即变量少而观察值多一列包含了所有的变量,而另一列则是与之相关的值

什么是宽数据?

宽数据是指数据集对所有的变量进行了明确的细分,各变量的值不存在重复环的情况也无法归类。数据总体的表现为 变量多而观察值少

每一列为一个变量,每一行为变量所对应的值


data: DataFrame,数组或数组列表


order,hue_order:字符串列表

作用:显式指定分类顺序,eg. order=[字段变量名1,字段变量名2,…]


jitter : float类型,True/1

作用:当数据重合较多时,用该参数做一些调整,也可以设置间距

如,jitter = 0.1 (通俗讲,就是让数据分散开)


dodge:bool

作用:若设置为True则沿着分类轴,将数据分离出来成为不同色调级别的条带,

否则,每个级别的点将相互叠加


orient:方向:v或者h

作用:设置图的绘制方向(垂直或水平),

如何选择:一般是根据输入变量的数据类型(dtype)推断出来。


color:matplotlib 颜色


palette:调色板名称,list类别或者字典

作用:用于对数据不同分类进行颜色区别


size:float

作用:设置标记大小(标记直径,以磅为单位)


edgecolor:matplotlib color,gray

作用:设置每个点的周围线条颜色


linewidth:float

作用:设置构图元素的线宽度


为了让大家更好地理解,接下来,通过 stripplot()函数绘制一个散点图,示例代码如下。

#获取tips数据

tips = sns.load_dataset(“tips”)


sns.stripplot(x=“day”, y=“total_bill”, data=tips)先看下数据

绘图:

加上hue,根据不同数据用不同颜色区分

sns.stripplot(x=“day”, y=“total_bill”, data=tips,hue=‘time’)


从上图中可以看出,图表中的横坐标是分类的数据,而且一些数据点会互相重叠,不易于观察。

为了解决这个问题,可以在调用striplot()函数时传入jitter参数,以调整横坐标的位置,改后的示例代码如下。

sns.stripplot(x=“day”, y=“total_bill”, data=tips, jitter=True)

#jitter=True,能够实现部分相同样本不重叠的散点图

除此之外,还可调用 swarmplot函数绘制散点图,该函数的好处是所有的数据点都不会重叠,可以很清晰地观察到数据的分布情况,示例代码如下。

sns.swarmplot(x=“day”, y=“total_bill”, data=tips)



2 类别内的数据分布

要想查看各个分类中的数据分布,显而易见,散点图是不满足需求的,原因是它不够直观。针对这种情况,我们可以绘制如下两种图形进行查看:


箱形图:

  • 箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。
  • 箱形图于1977年由美国著名统计学家约翰·图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数。


超出上下极限的单点为异常值

小提琴图:

  • 小提琴图 (Violin Plot) 用于显示数据分布及其概率密度。
  • 这种图表结合了箱形图和密度图的特征,主要用来显示数据的分布形状。
  • 中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间,而白点则为中位数。
  • **箱形图在数据显示方面受到限制,简单的设计往往隐藏了有关数据分布的重要细节。**例如使用箱形图时,我们不能了解数据分布。虽然小提琴图可以显示更多详情,但它们也可能包含较多干扰信息。



置信区间解释:

按照95%置信区间构造出来的区间,如果我构造出100个这样的区间,其中大约有95个会包含μ。

这就好像用渔网捞鱼,我知道一百次网下去,可能会有95次网到我想要的鱼,但是我并不知道是不是现在这一网。

2.1 绘制箱形图

seaborn中用于绘制箱形图的函数为 boxplot(),其语法格式如下:

seaborn.boxplot(x=None, y=None, hue=None, data=None, orient=None, color=None, saturation=0.75, width=0.8)


参数详解:

x, y, hue:数据或向量数据中的变量名称

用于绘制长格式数据的输入。


data:DataFrame,数组,数组列表

用于绘图的数据集。如果x和y都缺失,那么数据将被视为宽格式。否则数据被视为长格式。


order, hue_order:字符串列表

控制分类变量(对应的条形图)的绘制顺序,若缺失则从数据中推断分类变量的顺序。


orient:“v”或“h”

控制绘图的方向(垂直或水平)。这通常是从输入变量的 dtype 推断出来的,但是当“分类”变量为数值型或绘制宽格式数据时可用于指定绘图的方向。


color:matplotlib颜色

所有元素的颜色,或渐变调色板的种子颜色。


palette:调色板名称,列表或字典

用于hue变量的不同级别的颜色。可以从color_palette()得到一些解释,或者将色调级别映射到matplotlib颜色的字典,---- palette=[“r”,“g”,“b”,“y”]。


saturation:float

控制用于绘制颜色的原始饱和度的比例。通常大幅填充在轻微不饱和的颜色下看起来更好,如果您希望绘图颜色与输入颜色规格完美匹配可将其设置为1。


width:float

不使用色调嵌套时完整元素的宽度,或主要分组变量一个级别的所有元素的宽度。


dodge:bool

使用色调嵌套时,元素是否应沿分类轴移动。


fliersize:float

用于表示异常值观察的标记的大小。


linewidth:float

构图元素的灰线宽度。


whis:float

控制在超过高低四分位数时 IQR (四分位间距)的比例,因此需要延长绘制的触须线段。超出此范围的点将被识别为异常值。


notch:boolean

是否使矩形框“凹陷”以指示中位数的置信区间。还可以通过plt.boxplot的一些参数来控制


ax:matplotlib轴

绘图时使用的 Axes 轴对象,否则使用当前 Axes 轴对象


kwargs:键值映射

其他在绘图时传给plt.boxplot的参数


使用 boxplot()函数绘制箱形图的具体示例如下。

sns.boxplot(x=“day”, y=“total_bill”, data=tips)先看下原始数据

看下绘制的图

上述示例中,使用 seaborn中内置的数据集tips绘制了一个箱形图,图中x轴的名称为day,其刻度范围是 Thur~Sun(周四至周日),y轴的名称为 total_bill,刻度范围为10-50左右


从图中可以看出:

  • Thur列大部分数据都小于30,不过有5个大于30的异常值,
  • Fri列中大部分数据都小于30,只有一个异常值大于40,
  • Sat一列中有3个大于40的异常值,
  • Sun列中有2个大于40的异常值


2.2 绘制提琴图

seaborn中用于绘制提琴图的函数为violinplot(),其语法格式如下

seaborn.violinplot(x=None, y=None, hue=None, data=None)


参数解析:

data:指定绘制小提琴图的数据集。

x:指定小提琴图的x轴数据。

y:指定小提琴图的y轴数据。

hue:指定一个分组变量。

order:传递一个字符串列表,用于分类变量的排序。

hue_order:传递一个字符串列表,用于分类变量hue值的排序。

bw:指定核密度估计的带宽,带宽越大,密度曲线越光滑。新版的即将废除,使用bw_method和bw_adjust

scale:用于调整小提琴图左右的宽度,如果为area,则表示每个小提琴图左右部分拥有相同的面积;如果为count,则表示根据样本数量来调节宽度;如果为width,则表示每个小提琴图左右两部分拥有相同的宽度。

scale_hue:bool类型参数,当使用hue参数时,是否对hue变量的每个水平做标准化处理,默认为True。

width:使用hue参数时,用于控制小提琴图的宽度。

inner:指定小提琴图内部数据点的形态,如果为box,则表示绘制微型的箱线图;如果为quartiles,则表示绘制四分位的分布图;如果为point或stick,则表示绘制点或小竖条。

split:bool类型参数,使用hue参数时,将小提琴图从中间分为两个不同的部分,默认为False。

dodge:bool类型的参数,当使用hue参数时,是否绘制水平交错的小提琴图,默认为True。

orient:指定小提琴图的呈现方向,默认为垂直方向。

linewidth:指定小提琴图的所有线条宽度。

color:指定小提琴图的颜色,该参数与palette参数一起使用时无效。

palette:指定hue变量的区分色。

saturation:指定颜色的透明度。

ax:指定子图的位置。

通过violinplot()函数绘制提琴图的示例代码如下

sns.violinplot(x=“day”, y=“total_bill”, data=tips)


上述示例中,使用seaborn中内置的数据集绘制了一个提琴图,图中x轴的名称为day,y轴的名称为total_bill


从图中可以看出:

  • Thur一列中位于5~25之间的数值较多,
  • Fri列中位于5-30之间的较多,
  • Sat-列中位于5-35之间的数值较多,
  • Sun一列中位于5-40之间的数值较多。


3 类别内的统计估计

要想查看每个分类的集中趋势,则可以使用条形图和点图进行展示。 Seaborn库中用于绘制这两种图表的具体函数如下

  • barplot()函数:绘制条形图。
  • pointplot()函数:绘制点图。


这些函数的API与上面那些函数都是一样的,这里只讲解函数的应用,不再过多对函数的语法进行讲解了。

3.1 绘制条形图

最常用的查看集中趋势的图形就是条形图。默认情况下, barplot函数会在整个数据集上使用均值进行估计。


若每个类别中有多个类别时(使用了hue参数),则条形图可以使用引导来计算估计的置信区间(是指由样本统计量所构造的总体参数的估计区间),并使用误差条来表示置信区间。



使用 barplot()函数的示例如下

sns.barplot(x=“day”, y=“total_bill”, data=tips)


3.2 绘制点图

另外一种用于估计的图形是点图,可以调用 pointplot()函数进行绘制,该函数会用高度低计值对数据进行描述,而不是显示完整的条形,它只会绘制点估计和置信区间


通过 pointplot()函数绘制点图的示例如下。

sns.pointplot(x=“day”, y=“total_bill”, data=tips)


目录
打赏
0
0
0
0
40
分享
相关文章
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
55 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
116 61
Python装饰器实战:打造高效性能计时工具
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
40 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
46 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
87 37
Python时间序列分析工具Aeon使用指南
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
100 8
|
3月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
163 7
|
3月前
|
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
59 4
Seaborn 教程
Seaborn 教程
67 5

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等