全网最全seaborn的介绍

可视化统计关系

relplot

seaborn.relplot(x=None, y=None, hue=None, size=None, style=None, 
data=None, row=None, col=None, col_wrap=None, row_order=None, 
col_order=None, palette=None, hue_order=None, hue_norm=None, 
sizes=None, size_order=None, size_norm=None, markers=None, dashes=None,
 style_order=None, legend='brief', kind='scatter', height=5, aspect=1,
  facet_kws=None, **kwargs)

relplot(关系图)可以看做是lineplot和scatterplot的归约,可以通过kind参数来指定画什么图形,重要参数解释如下:

kind:默认scatter(散点图),也可以选择kind=‘line’(线图);
sizes:List、dict或tuple,可选,简单点就是图片大小,注意和size区分;
col、row:将决定网格的面数的分类变量,具体看实例

散点图

绘制散点图,只需要将kind设置“scatter"

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid")

tips = sns.load_dataset("tips")
sns.relplot(x="total_bill", y="tip",kind="scatter", data=tips)

效果图如下
在这里插入图片描述
虽然这些点是以二维绘制的,但可以通过根据第三个变量对点进行着色来将另一个维度添加到绘图中。在 seaborn 中,这被称为使用“色调语义”,因为该点的颜色获得了意义

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid")

tips = sns.load_dataset("tips")
sns.relplot(x="total_bill", y="tip", hue="smoker",kind="scatter", data=tips)

在这里插入图片描述

为了强调类别之间的差异并提高可访问性,可以为每个类别使用不同的标记样式

sns.relplot(x="total_bill", y="tip", hue="smoker", style="smoker",
            data=tips)

在这里插入图片描述
第三个语义变量改变每个点的大小

sns.relplot(x="total_bill", y="tip", size="size", data=tips)

在这里插入图片描述

线型图

散点图是非常有效的,但是没有通用的最优可视化类型。相反,可视表示应该适应数据集的细节以及您试图用图表回答的问题。
对于某些数据集,您可能希望了解一个变量中的变化关于时间的函数,或者类似的连续变量。在这种情况下,一个很好的选择是绘制线图。在 seaborn 中,这可以通过lineplot()函数直接实现,也可以通过设置relplot()的参数kind="line"来实现:

df = pd.DataFrame(dict(time=np.arange(500),
                       value=np.random.randn(500).cumsum()))
g = sns.relplot(x="time", y="value", kind="line", data=df)

在这里插入图片描述
更复杂的数据集将对x变量的相同值有多个观测值。seaborn 的默认行为是通过绘制平均值及 95%的置信区间,在每个x周围聚合多个测量值

fmri = sns.load_dataset("fmri")
sns.relplot(x="timepoint", y="signal", kind="line", data=fmri)

在这里插入图片描述

可视化分类数据

在绘制关系图的教程中,我们学习了如何使用不同的可视化方法来展示数据集中多个变量之间的关系。在示例中,我们专注于两个数值变量之间的主要关系。如果其中一个主要变量是“可分类的”(能被分为不同的组),那么我们可以使用更专业的可视化方法。
在 seaborn 中,有几种不同的方法可以对分类数据进行可视化。类似于relplot()与scatterplot()或者lineplot()之间的关系,有两种方法可以制作这些图。有许多 axes-level 函数可以用不同的方式绘制分类数据,还有一个 figure-level 接口catplot(),可以对它们进行统一的高级访问

分类散点图

在catplot()中,数据默认使用散点图表示。在 seaborn 中有两种不同的分类散点图,它们采用不同的方法来表示分类数据。 其中一种是属于一个类别的所有点,将沿着与分类变量对应的轴落在相同位置。stripplot()方法是catplot()中 kind 的默认参数,它是用少量随机“抖动”调整分类轴上的点的位置

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

在这里插入图片描述

类别内观察点的分布

随着数据集的大小增加,分类散点图中每个类别可以提供的值分布信息受到限制。当发生这种情况时,有几种方法可以总结分布信息,以便于我们可以跨分类级别进行简单比较

箱线图

第一个是熟悉的boxplot()。它可以显示分布的三个四分位数值以及极值。“胡须”延伸到位于下四分位数和上四分位数的 1.5 IQR 内的点,超出此范围的观察值会独立显示。这意味着箱线图中的每个值对应于数据中的实际观察值

sns.catplot(x="day", y="total_bill", kind="box", data=tips)

在这里插入图片描述
添加hue语义, 语义变量的每个级别的框沿着分类轴移动,因此它们将不会重叠

sns.catplot(x="day", y="total_bill", hue="smoker", kind="box", data=tips)

在这里插入图片描述

小提琴图

另一种方法是violinplot(),它将箱线图与分布教程中描述的核密度估算程序结合起来:

sns.catplot(x="day", y="total_bill", kind="violin", data=tips)

在这里插入图片描述

当 hue 参数只有两个级别时,也可以“拆分”violins,这样可以更有效地利用空间

sns.catplot(x="day", y="total_bill", hue="sex",
            kind="violin", split=True, data=tips);

在这里插入图片描述

sns.catplot(x="day", y="total_bill", hue="sex",
            kind="violin", data=tips);

在这里插入图片描述
我们也可以将swarmplot()或striplot()与箱形图或 violin plot 结合起来,展示每次观察以及分布摘要

可视化数据集的分布

绘制单变量分布

在 seaborn 中想要快速查看单变量分布的最方便的方法是使用distplot()函数。默认情况下,该方法将会绘制直方图histogram并拟合[内核密度估计] kernel density estimate (KDE).

x = np.random.normal(size=100)
sns.distplot(x)

在这里插入图片描述

直方图

对于直方图我们可能很熟悉,而且 matplotlib 中已经存在hist函数。 直方图首先确定数据区间,然后观察数据落入这些区间中的数量来绘制柱形图以此来表征数据的分布情况。
为了说明这一点,让我们删除密度曲线并添加一个 rug plot,它在每个观察值上画一个小的垂直刻度。您可以使用rugplot() 函数来创建 rugplot 本身,但是也可以在 distplot()中使用

sns.distplot(x, kde=False, rug=True)

在这里插入图片描述
在绘制柱状图时,您的主要选择是要使用的“桶”的数量和放置它们的位置。 distplot() 使用一个简单的规则来很好地猜测默认情况下正确的数字是多少,但是尝试更多或更少的“桶”可能会揭示数据中的其他特性

sns.distplot(x, bins=20, kde=False, rug=True)

在这里插入图片描述

核密度估计

可能你对核密度估计不太熟悉,但它可以是绘制分布形状的有力工具。和直方图一样,KDE 图沿另一个轴的高度,编码一个轴上的观测密度:

sns.distplot(x, hist=False, rug=True)

在这里插入图片描述

果在 seaborn 中使用kdeplot() 函数, 我们可以得到相同的曲线。这个函数也被distplot()所使用, 但是当您只想要密度估计时,它提供了一个更直接的接口,可以更容易地访问其他选项:

sns.kdeplot(x, fill=True)

在这里插入图片描述

绘制二元分布

它对于可视化两个变量的二元分布也很有用。在 seaborn 中,最简单的方法就是使用jointplot()函数,它创建了一个多面板图形,显示了两个变量之间的二元(或联合)关系,以及每个变量在单独轴上的一元(或边际)分布

散点图

可视化二元分布最常见的方法是散点图,其中每个观察点都以 x 和 y 值表示。 这类似于二维 rug plot。 您可以使用 matplotlib 的plt.scatter 函数绘制散点图, 它也是 jointplot()函数显示的默认类型的

mean, cov = [0, 1], [(1, .5), (.5, 1)]
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["x", "y"])



sns.jointplot(x="x", y="y", data=df);

在这里插入图片描述

可视化数据集中的成对关系

要在数据集中绘制多个成对的双变量分布,您可以使用pairplot()函数。 这将创建一个轴矩阵并显示 DataFrame 中每对列的关系,默认情况下,它还绘制对角轴上每个变量的单变量分布

iris = sns.load_dataset("iris")
sns.pairplot(iris);

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 目录 1. 目录 2 2. 绘图函数Plotting functions 4 2.1. 可视化的统计关系Visualizing statistical relationships 4 2.1.1. 用散点图联系变量Relating variables with scatter plots 4 2.1.2. 强调线条图的连续性Emphasizing continuity with line plots 10 2.1.3. 显示与切面的多个关系Showing multiple relationships with facets 21 2.2. 分类数据绘图Plotting with categorical data 24 2.2.1. 分类散点图Categorical scatterplots 26 2.2.2. 分类观测值分布Distributions of observations within categories 31 2.2.3. 分类统计估计Statistical estimation within categories 37 2.2.4. 对“wide-form”数据作图Plotting “wide-form” data 41 2.2.5. 显示与facet的多个关系Showing multiple relationships with facets 43 2.3. 可视化数据集的分布Visualizing the distribution of a dataset 44 2.3.1. 绘制单变量分布Plotting univariate distributions 45 2.3.2. 绘制二元分布Plotting bivariate distributions 51 2.3.3. 在数据集中可视化成对关系Visualizing pairwise relationships in a dataset 55 2.4. 可视化线性关系Visualizing linear relationships 57 2.4.1. 函数绘制线性模型Functions to draw linear regression models 58 2.4.2. 拟合不同种类的模型Fitting different kinds of models 61 2.4.3. 在其他变量上的情况Conditioning on other variables 68 2.4.4. 控制图表的大小和形状Controlling the size and shape of the plot 71 2.4.5. 在其他上下文中绘制回归图Plotting a regression in other contexts 73 3. 多图网格Multi-plot grids 76 3.1. 构建结构化的多图网格Building structured multi-plot grids 76 3.2. 有条件的小倍数Conditional small multiples 77 3.3. 使用定制函数Using custom functions 86 3.4. 绘制成对的数据关系Plotting pairwise data relationships 90 4. 绘图美学Plot aesthetics 99 4.1. 控制图表美学Controlling figure aesthetics 99 4.1.1. Seaborn图表风格Seaborn figure styles 101 4.1.2. 删除轴上的小凸起Removing axes spines 104 4.1.3. 临时设置图表样式Temporarily setting figure style 105 4.1.4. 覆盖Seaborn样式的元素Overriding elements of the seaborn styles 106 4.1.5. 缩放图表元素Scaling plot elements 108 4.2. 选择调色板Choosing color palettes 111 4.2.1. 创建颜色调色板Building color palettes 111 4.2.2. 定性调色板Qualitative color palettes 112 4.2.3. 连续调色板Sequential color palettes 116 4.2.4. 不同颜色的调色板Diverging color palettes 122 4.2.5. 设置默认调色板Setting the default color palette 124 5. 教程中的数据集 125

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值