Seaborn-5 多变量分析绘图
导入需要的模块和数据集。
1 %matplotlib inline 2 import numpy as np 3 import pandas as pd 4 import matplotlib as mpl 5 import matplotlib.pyplot as plt 6 import seaborn as sns 7 sns.set(style="whitegrid", color_codes=True) 8 np.random.seed(sum(map(ord, "categorical")))
9 titanic = sns.load_dataset("titanic") 10 tips = sns.load_dataset("tips") 11 iris = sns.load_dataset("iris")
分类数据散点图
在分类数据的基础上展示定量数据的最简单函数就是 stripplot()。
1 sns.stripplot(x="day", y="total_bill", data=tips);

加入jitter参数,调整横坐标位置。
1 sns.stripplot(x="day", y="total_bill", data=tips, jitter=True);

swarmplot() 函数:所有的点都不会重叠,这样可以很清晰的观察到数据的分布。
1 sns.swarmplot(x="day", y="total_bill", data=tips);

通过 hue 参数加入另一个嵌套的分类变量,而且嵌套的分类变量可以以不同的颜色区别。
1 sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips);

有时候将分类变量放在垂直轴上是非常有用的(当类别名称相对较长或有很多类别时,这一点特别有用)。 可以使用 orient 关键字强制定向,但通常可以互换x和y的变量的数据类型来完成。
1 sns.swarmplot(x="total_bill", y="day", hue="time", data=tips);

分类数据分布图
箱型图
通过箱型图可以很直观的观察到数据的四分位分布(1/4分位,中位数,3/4分位,以及四分位距)。
N = 1.5IQR如果一个值>Q3+N或 < Q1-N,则为离群点。
1 sns.boxplot(x="day", y="total_bill", hue="time", data=tips);

提琴图
它结合了箱体图和分布教程中描述的核心密度估计过程。
1 sns.violinplot(x="total_bill", y="day", hue="time", data=tips);

当 hue 的嵌套类型只有两类的时候,也可以使用split 参数将小提琴分割。
1 sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True);

1 sns.violinplot(x="day", y="total_bill", data=tips, inner=None); 2 sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5);

分类数据统计估计图
条形图
在Seaborn中barplot()函数会在整个数据集上显示估计,默认情况下使用均值进行估计。 当在每个类别中有多个类别时(使用了 hue),它可以使用引导来计算估计的置信区间,并使用误差条来表示置信区间。显示值的集中趋势可以用条形图。
1 sns.barplot(x="sex", y="survived", hue="class", data=titanic);

条形图的特殊情况是当您想要显示每个类别的数量,而不是计算统计量。
1 sns.countplot(x="deck", data=titanic, palette="Greens_d");

如果将要计数的变量移动到y轴上,那么条形就会横过来显示。
1 sns.countplot(y="deck", hue="class", data=titanic, palette="Greens_d");
点图
pointplot()函数提供了估计可视化的另一种风格。该函数会用高度估计值对数据进行描述,而不是显示一个完整的条形,它只绘制点估计和置信区间。另外,点图连接相同hue类别的点,比如male中的蓝色会连接female中的蓝色。这使得很容易看出主要关系如何随着第二个变量的变化而变化。点图可以更好的描述变化差异。
1 sns.pointplot(x="sex", y="survived", hue="class", data=titanic);

为了使能够更好的显示,可以使用不同的标记和线条样式来展示不同hue类别的层次。
1 sns.pointplot(x="class", y="survived", hue="sex", data=titanic, 2 palette={"male": "g", "female": "m"}, 3 markers=["^", "o"], linestyles=["-", "--"]);

宽型数据
1 sns.boxplot(data=iris, orient="h");

多层面板分类图
1 sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips, kind="bar");

使用factorplot()的主要优点是可以很容易使用"facet"绘制多面图,展示更多其他分类变量。
1 sns.factorplot(x="day", y="total_bill", hue="smoker", col="time", data=tips, kind="swarm");

任何一种图形都可以画出来。由于FacetGrid的工作原理,要更改图形的大小和形状,需要指定适用于每个图的size和aspect参数。
1 sns.factorplot(x="time", y="total_bill", hue="smoker", col="day", data=tips, kind="box", size=4, aspect=.5);

factorplot里面可能传进来的参数。
参数对应的中文解释
浙公网安备 33010602011771号