5-5 可视化库Seaborn-多变量分析绘图

 

Parameters:

参数 解释 变量
x,y,hue 数据集变量 变量名
date 数据集 数据集名
row,col 更多分类变量进行平铺显示 变量名
col_wrap 每行的最高平铺数 整数
estimator 在每个分类中进行矢量到标量的映射 矢量
ci 置信区间 浮点数或None
n_boot 计算置信区间时使用的引导迭代次数 整数
units 采样单元的标识符,用于执行多级引导和重复测量设计 数据变量或向量数据
order, hue_order 对应排序列表 字符串列表
row_order, col_order 对应排序列表 字符串列表
kind point 默认, bar 柱形图, count 频次, box 箱体, violin 提琴, strip 散点,swarm 分散点 (具体图形参考文章前部的分类介绍)
size 每个面的高度(英寸) 标量
aspect 纵横比 标量
orient 方向 "v"/"h"
color 颜色 matplotlib颜色
palette 调色板 seaborn颜色色板或字典
legend hue的信息面板 True/False  
legend_out 是否扩展图形,并将信息框绘制在中心右边 True/False
share{x,y} 共享轴线 True/False
facet_kws FacetGrid的其他参数 字典
In [1]:
%matplotlib inline
import numpy as np
import pandas as pd
from scipy import stats,integrate
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="whitegrid",color_codes=True)

#生成分类数据随机种子
#map可以把一个 list 转换为另一个 list,只需要传入转换函数。
#ord函数主要用来返回对应字符的ascii码,接受一个参数,返回值是int,整数
np.random.seed(sum(map(ord,"category")))
#自带的数据集
titanic=sns.load_dataset("titanic")
tips=sns.load_dataset("tips")
iris=sns.load_dataset("iris")
In [2]:
sns.stripplot(x="day",y="total_bill",data=tips)
Out[2]:
<matplotlib.axes._subplots.AxesSubplot at 0xa99e0b8>
 
 

1.重叠是很常见的现象,但是重叠影响观察数据的量,有如下方法解决:

1-1.加入抖动量jitter

In [3]:
sns.stripplot(x="day",y="total_bill",data=tips,jitter=True)
Out[3]:
<matplotlib.axes._subplots.AxesSubplot at 0xad9a860>
 
 

1-2. 画分簇散点图:它使用避免重叠点的算法将分类轴上的每个散点图点定位

In [4]:
sns.swarmplot(x="day",y="total_bill",data=tips)
Out[4]:
<matplotlib.axes._subplots.AxesSubplot at 0xadde278>
 
 
  • 当然也可以传入hue参数添加多个嵌套的分类变量。高于分类轴上的颜色和位置时冗余的,现在每个都提供有两个变量之一的信息
In [5]:
sns.swarmplot(x="day",y="total_bill",data=tips,hue="sex")
Out[5]:
<matplotlib.axes._subplots.AxesSubplot at 0xae53710>
 
In [6]:
#您可以使用orient关键字强制定向,但通常可以从传递给x和/或y的变量的数据类型推断绘图方向
sns.swarmplot(x="total_bill", y="day", hue="time", data=tips);
 
 

合图

2.合图

  • IQR 即统计学概念分四分位距,第一/四分位与第三/四分位之间的距离
  • N=1.5IQR如果一个值>Q3+N或<Q1-N ,则为离群点
In [7]:
sns.boxplot(x="day",y="total_bill",hue="time",data=tips);
 
In [8]:
sns.violinplot(y="day",x="total_bill",hue="sex",data=tips)
Out[8]:
<matplotlib.axes._subplots.AxesSubplot at 0xafdd240>
 
 

2-1 小提琴图分割特征

  • split=True,在一个小提琴上分割特征
In [9]:
sns.violinplot(x="day",y="total_bill",hue="sex",data=tips,split=True)
Out[9]:
<matplotlib.axes._subplots.AxesSubplot at 0xb08fa90>
 
 

2-2两种图相互叠加

In [10]:
sns.violinplot(x="day",y="total_bill",data=tips,inner=None)
sns.swarmplot(x="day",y="total_bill",data=tips,color="w",alpha=0.5)
Out[10]:
<matplotlib.axes._subplots.AxesSubplot at 0xb0fab70>
 
 
  1. 显示值的集中趋势可以用柱状图
In [11]:
sns.barplot(x="sex",y="survived",hue="class",data=titanic)
Out[11]:
<matplotlib.axes._subplots.AxesSubplot at 0xb17ea90>
 
 
  1. 点图可以更好的描述变化差异
In [12]:
sns.pointplot(x="sex",y="survived",hue="class",data=titanic)
Out[12]:
<matplotlib.axes._subplots.AxesSubplot at 0xb1db5c0>
 
In [13]:
sns.pointplot(x="class",y="survived",hue="sex",data=titanic,
             palette={"male":"g","female":"m"},#设置颜色
             markers=["^","o"], linestyles=["-","--"])     #设置标记,线性  
Out[13]:
<matplotlib.axes._subplots.AxesSubplot at 0xb25aa58>
 
 

5.宽形数据

In [14]:
sns.boxplot(data=iris,orient="h")#,orient="h"指定画图方向是横的
Out[14]:
<matplotlib.axes._subplots.AxesSubplot at 0xaeff4a8>
 
 

6.多层面板分类图

In [15]:
sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips)
Out[15]:
<seaborn.axisgrid.FacetGrid at 0xb0827f0>
 
 
  • kind="bar":指定画图种类
In [16]:
sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips,kind="bar")
Out[16]:
<seaborn.axisgrid.FacetGrid at 0xb1b3780>
 
 
  • col指定横轴分类
In [17]:
sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips,kind="swarm",col="time")
Out[17]:
<seaborn.axisgrid.FacetGrid at 0xaf96e80>
 
 
  • 任何一种图形都可以画出来。基于FacetGrid的工作原理,要更改图形的大小和形状,需要指定适用于每个方面的size和aspect参数:size大小和aspect长宽比
In [18]:
sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips,kind="box",col="day",size=4,aspect=0.5)
Out[18]:
<seaborn.axisgrid.FacetGrid at 0xb3386d8>
 

猜你喜欢

转载自www.cnblogs.com/AI-robort/p/11767748.html