seaborn 画图工具的基本使用

1. Seaborn 的基本使用

  • 类别散点图:seaborn.stripplot()
  • 类别内的数据分布:
    箱线图:seaborn.boxplot()
    小提琴图:seaborn.violinplot()
  • 类别内的统计估计
    条形图:barplot()
    点图:pointplot()

1.1 Seaborn----绘制统计图形

Seaborn基于 Matplotlib核心库进行了更高级的API封装,可以轻松地画出更漂亮的图形,而Seaborn的漂亮主要体现在配色更加舒服,以及图 形元素的样式更加细腻。
首先需要安装seaborn
# 安装 pip3 install seaborn
# 导入 import seaborn as sns

1.1.1 绘制单变量分布

可以采用最简单的直方图描述单变量的分布情况。 Seaborn中提供了 distplot()函数,它默认绘制的是一个带有核密度估计曲线的直方图。 distplot()函数的语法格式如下。

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, color=None)

上述函数中常用参数的含义如下:
(1) a:表示要观察的数据,可以是 Series、一维数组或列表。
(2) bins:用于控制条形的数量。
(3) hist:接收布尔类型,表示是否绘制(标注)直方图。
(4) kde:接收布尔类型,表示是否绘制高斯核密度估计曲线。
(5) rug:接收布尔类型,表示是否在支持的轴方向上绘制rugplot。
在这里插入图片描述

1.1.2. 绘制双变量分布

两个变量的二元分布可视化也很有用。在 Seaborn中最简单的方法是使用 jointplot()函数,该函数可以创建一个多面板图形,比如散点图、二 维直方图、核密度估计等,以显示两个变量之间的双变量关系及每个变量在单坐标轴上的单变量分布。
jointplot()函数的语法格式如下。

seaborn.jointplot(x, y, data=None, kind='scatter', stat_func=None, color=None, ratio=5, space=0.2, dropna=True)

上述函数中常用参数的含义如下:
(1) kind:表示绘制图形的类型。
(2) stat_func:用于计算有关关系的统计量并标注图。
(3) color:表示绘图元素的颜色。
(4) size:用于设置图的大小(正方形)。
(5) ratio:表示中心图与侧边图的比例。该参数的值越大,则中心图的占比会越大。
(6) space:用于设置中心图与侧边图的间隔大小。

1 绘制散点图
import numpy as np
import pandas as pd 
import seaborn as sns # 创建DataFrame对象
 dataframe_obj = pd.DataFrame({"x": np.random.randn(500),"y": np.random.randn(500)})
  # 绘制散布图 
  sns.jointplot(x="x", y="y", data=dataframe_obj)

在这里插入图片描述

2 绘制二维直方图

sns.jointplot("x","y",data=df,kind="hex")
在这里插入图片描述

3 绘制核密度估计图形
sns.jointplot("x","y",data=df,kind="kde")

在这里插入图片描述
通过观等高线的颜色深浅,可以看出哪个范围的数值分布的最多,哪个范围的数值分布的最少

4 绘制成对的双变量分布

要想在数据集中绘制多个成对的双变量分布,则可以使用pairplot()函数实现,该函数会创建一个坐标轴矩阵,并且显示Datafram对象中每对变 量的关系。另外,pairplot()函数也可以绘制每个变量在对角轴上的单变量分布。

dataset=sns.load_dataset("iris")
dataset.head()

在这里插入图片描述

sns.pairplot(dataset)

在这里插入图片描述

1.1.3 用分类数据绘图

数据集中的数据类型有很多种,除了连续的特征变量之外,最常见的就是类别型的数据了,比如人的性别、学历、爱好等,这些数据类型都不能用连续的变量来表示,而是用分类的数据来表示
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)
上述函数中常用参数的含义如下
(1) x,y,hue:用于绘制长格式数据的输入。
(2) data:用于绘制的数据集。如果x和y不存在,则它将作为宽格式,否则将作为长格式。
(3) jitter:表示抖动的程度(仅沿类別轴)。当很多数据点重叠时,可以指定抖动的数量或者设为Tue使用默认值。

data=sns.load_dataset("tips")
data.head()

在这里插入图片描述

sns.stripplot(x="day", y="total_bill", data=tips)

在这里插入图片描述

从上图中可以看出,图表中的横坐标是分类的数据,而且一些数据点会互相重叠,不易于观察。为了解决这个问题,可以在调用striplot()函数时 传入jitter参数,以调整横坐标的位置,改后的示例代码如下。

sns.stripplot(x="day",y="total_bill",data=data,hue="time",jitter=True)

在这里插入图片描述

sns.swarmplot("day","total_bill",data=data)

在这里插入图片描述

2 类别内的数据分布

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

  • 箱形图:
    箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。
    箱形图于1977年由美国著名统计学家约翰·图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、及上下四分 位数。
    在这里插入图片描述
  • 小提琴图
    小提琴图 (Violin Plot) 用于显示数据分布及其概率密度。
    这种图表结合了箱形图和密度图的特征,主要用来显示数据的分布形状。
    中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 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)
常用参数的含义如下:

  • (1) palette:用于设置不同级别色相的颜色变量。---- palette=[“r”,“g”,“b”,“y”]
  • (2) saturation:用于设置数据显示的颜色饱和度。---- 使用小数表示

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

sns.boxplot("day","total_bill",data=data,hue="time",palette=["g","r"],saturation=0.9)
在这里插入图片描述
从图中可以看出,
Thur列大部分数据都小于30,不过有5个大于30的异常值,
Fri列中大部分数据都小于30,只有一个异常值大于40,
Sat一列中有3个大于40的异常值,
Sun列中有两个大于40的异常值

2.2 绘制小提琴图

sns.violinplot("day","total_bill",data=data)
在这里插入图片描述

2.3 类别内的估计统计

最常用的查看集中趋势的图形就是条形图。默认情况下, barplot函数会在整个数据集上使用均值进行估计。若每个类别中有多个类别时(使用 了hue参数),则条形图可以使用引导来计算估计的置信区间(是指由样本统计量所构造的总体参数的估计区间),并使用误差条来表示置信区 间。
sns.barplot("day","total_bill",data=data)
在这里插入图片描述
另外一种用于估计的图形是点图,可以调用 pointplot()函数进行绘制,该函数会用高度低计值对数据进行描述,而不是显示完整的条形,它只 会绘制点估计和置信区间。
sns.pointplot("day","total_bill",data=data)
在这里插入图片描述

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `seaborn` 是一个基于 `matplotlib` 的数据可视化库,它具有高层的图形绘制和接口。 `FacetGrid` 函数是 `seaborn` 库中的一个多维数据图形接口。通过使用该函数,我们可以方便地创建基于不同的分面变量的多个图形。 使用方法: 1. 导入数据:使用 pandas 读取数据并将其存储在一个 DataFrame 中。 2. 导入 seaborn 库并设置主题:在代码开头使用以下代码导入 seaborn 库: ``` import seaborn as sns sns.set() ``` 3. 创建 `FacetGrid` 实例:使用以下代码创建一个 `FacetGrid` 实例,其中变量 `data` 是数据 DataFrame,变量 `col` 是分面变量的名称: ``` g = sns.FacetGrid(data, col=col) ``` 4. 绘图:使用以下代码将图形添加到 `FacetGrid` 实例: ``` g.map(sns.distplot, "column_name") ``` 5. 显示图形:使用以下代码显示图形: ``` plt.show() ``` 该示例代码将绘制一个基于分面变量的分布图,您可以根据需要选择不同的图形类型。 ### 回答2: seaborn的FacetGrid函数是一个方便的工具,可以用来在一个图形中展示多个子图,每个子图的数据可以根据某个变量进行分组显示。 使用FacetGrid函数的一般步骤如下: 1. 导入seaborn库和所需数据。 2. 创建一个FacetGrid对象,可以传入数据集和需要进行分组的变量。 3. 使用FacetGrid对象的`map()`方法来绘制子图,传入一个绘图函数和需要进行分组的变量。 4. 可以通过设置FacetGrid对象的各种属性来调整子图的样式,例如设置标题、坐标轴标签等。 5. 最后使用`plt.show()`函数显示图形。 举个例子,假设我们有一个数据集包含学生的成绩和其他信息,我们想要绘制一个FacetGrid图来展示每个班级学生的成绩分布。 首先导入seaborn库和数据集: ```python import seaborn as sns import matplotlib.pyplot as plt # 导入数据集 data = sns.load_dataset('student_scores') ``` 接下来创建FacetGrid对象,将数据集传入,并指定要根据`class`变量进行分组: ```python # 创建FacetGrid对象 g = sns.FacetGrid(data, col='class') ``` 然后使用`map()`方法传入绘图函数和`class`变量来绘制子图: ```python # 绘制子图 g.map(sns.histplot, 'score') ``` 最后设置FacetGrid对象的属性,并显示图形: ```python # 设置图形属性 g.set_axis_labels('Score', 'Count') g.set_titles('{col_name}') plt.show() ``` 以上就是使用seaborn的FacetGrid函数的基本步骤。通过FacetGrid函数,我们可以方便地在一个图形中展示多个子图,并根据分组变量对数据进行可视化分析。 ### 回答3: SeabornPython数据可视化库之一,而FacetGrid是Seaborn库中的一个函数,用于创建基于特定变量的网格分面绘图。 使用FacetGrid函数的一般步骤如下: 1. 导入Seaborn库和所需的数据集。 2. 准备数据集,确保数据集中包含用于分面的变量。 3. 调用FacetGrid函数并传入数据集和分面变量,可以选择传入row和/或col参数创建行和/或列的分面网格。 4. 使用map函数指定要在每个分面中绘制的图形类型(例如:折线图、柱状图等)和相应的X和Y变量。 5. 可以根据需要对图形进行进一步的自定义调整,如添加标题、标签、调整颜色等。 6. 最后使用plt.show()函数来显示图形。 例如,假设我们有一个名为"tips"的数据集,其中包含了餐厅顾客的小费数据。我们想要根据顾客性别的不同,绘制小费金额的柱状图。 ```python import seaborn as sns # 导入数据集 tips = sns.load_dataset('tips') # 使用FacetGrid函数创建分面网格,按性别分面 g = sns.FacetGrid(tips, col='sex') # 在每个分面中绘制小费金额的柱状图 g.map(sns.histplot, 'tip') # 添加标题和标签 g.set_axis_labels('Tip', 'Frequency') plt.suptitle('Distribution of Tips by Gender') # 显示图形 plt.show() ``` 上述代码中,我们首先导入了Seaborn库和"tips"数据集。然后,我们使用FacetGrid函数创建一个分面网格"g",并通过传入"tips"数据集和分面变量"sex"来指定按性别进行分面。 接下来,使用map函数在每个分面中绘制小费金额的柱状图,通过传入sns.histplot函数和X变量"tip"来实现。 最后,我们通过调用g.set_axis_labels函数设置X和Y轴标签,并使用plt.suptitle函数添加整个图形的标题。最后使用plt.show()函数来显示图形。 以上就是使用Seaborn的FacetGrid函数进行分面绘图的一般步骤。通过调整参数和添加其他自定义选项,可以创建更复杂和个性化的分面图形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值