Seaborn多图组合

1. jointplot 两变量图

 数据分析中常用做图的方式实现相关性分析,即X轴设置为变量A,Y轴设置为变量B,做散点图,由于散点图中点的叠加显示,往往还需要关注每个变量自身的分布情况,jointplot把描述变量的分布图和变量相关的散点图组合在一起,是相关性分析最常用的工具,图片上还能展示回归曲线,以及相关系数。

import statsmodels.api as sm
import seaborn as sns
sns.set(style="darkgrid")
data = sm.datasets.ccard.load_pandas().data
g = sns.jointplot('AVGEXP', 'AGE', data=data, kind="reg",
                 xlim=(0, 1000), ylim=(0, 50), color="m")

 本例中使用statsmodels库的ccard数据,分析了其中两个数值类型变量的相关性,使用xlim和ylim设置了图片显示范围,忽略了离群点,kind参数可设置做图方式:scatter散点图,kde密度图,hex六边形图等,本例中选择reg画出了线性回归图。

2. pairplot多变量图

 如果用对N个变量的相关性做散点图,用maplotlib需要做NxN个图,用pairplot函数调用一次即可实现,其对角线上是直方图,其余都是两两变量的散点图,不仅简单,还能组合在一起作对比。

data = sm.datasets.ccard.load_pandas().data
sns.pairplot(data, vars=['AGE','INCOME', 'INCOMESQ','OWNRENT'])

 图中可以看到,数据类型INCOME与INCOMESQ呈强相关,AGE与INCOME也有一定相关趋势,对角线上的图对应的是每个因素与其自身的对比,图中以直方图显示了该变量的分布。

3. factorplot两变量关系图

 factorplot用于绘制两维变量的关系图,用kind可指定其作图类型,包括:point, bar, count, box, violin, strip等。

data = sm.datasets.fair.load_pandas().data
sns.factorplot(x='occupation', y='affairs', hue='religious', data=data)

4. FacetGrid结构化绘图网格

 FacetGrid可以选择任意的做图方式,以及自定义的做图函数,通常包含两部分,FacetGrid部分指定了数据集,行,列,map部分指定做图方式,以及相应参数。

g = sns.FacetGrid(tips, col = 'time', row = 'smoker') # 按行和列的分类做N个图
g.map(plt.hist, 'total_bill', bins = 10) # 指定做图方式

 可以看到无论是连续图,还是分类图,无论是用FacetGrid还是barplot都是将多个特征放在同一张图片上展示,其差别一方面在于观察角度不同,另一方面也取决于数据自身的类型。

发布了322 篇原创文章 · 获赞 246 · 访问量 119万+

猜你喜欢

转载自blog.csdn.net/xieyan0811/article/details/88074708
今日推荐