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>

机器学习 多变量分布 多变量分析图_标量_02

 

 

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

In [4]:

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

Out[4]:

<matplotlib.axes._subplots.AxesSubplot at 0xadde278>

机器学习 多变量分布 多变量分析图_标量_03

 

 

  • 当然也可以传入hue参数添加多个嵌套的分类变量。高于分类轴上的颜色和位置时冗余的,现在每个都提供有两个变量之一的信息

In [5]:

sns.swarmplot(x="day",y="total_bill",data=tips,hue="sex")

Out[5]:

<matplotlib.axes._subplots.AxesSubplot at 0xae53710>

机器学习 多变量分布 多变量分析图_数据集_04

 

In [6]:

#您可以使用orient关键字强制定向,但通常可以从传递给x和/或y的变量的数据类型推断绘图方向
sns.swarmplot(x="total_bill", y="day", hue="time", data=tips);

机器学习 多变量分布 多变量分析图_标量_05

 

 

合图¶

2.合图

  • IQR 即统计学概念分四分位距,第一/四分位与第三/四分位之间的距离
  • N=1.5IQR如果一个值>Q3+N或<Q1-N ,则为离群点

In [7]:

sns.boxplot(x="day",y="total_bill",hue="time",data=tips);

机器学习 多变量分布 多变量分析图_机器学习 多变量分布_06

 

In [8]:

sns.violinplot(y="day",x="total_bill",hue="sex",data=tips)

Out[8]:

<matplotlib.axes._subplots.AxesSubplot at 0xafdd240>

机器学习 多变量分布 多变量分析图_标量_07

 

 

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>

机器学习 多变量分布 多变量分析图_机器学习 多变量分布_08

 

 

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>

机器学习 多变量分布 多变量分析图_标量_09

 

 

  1. 显示值的集中趋势可以用柱状图

In [11]:

sns.barplot(x="sex",y="survived",hue="class",data=titanic)

Out[11]:

<matplotlib.axes._subplots.AxesSubplot at 0xb17ea90>

机器学习 多变量分布 多变量分析图_标量_10

 

  1. 点图可以更好的描述变化差异

In [12]:

sns.pointplot(x="sex",y="survived",hue="class",data=titanic)

Out[12]:

<matplotlib.axes._subplots.AxesSubplot at 0xb1db5c0>

机器学习 多变量分布 多变量分析图_机器学习 多变量分布_11

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>

机器学习 多变量分布 多变量分析图_标量_12

 

 

5.宽形数据

In [14]:

sns.boxplot(data=iris,orient="h")#,orient="h"指定画图方向是横的

Out[14]:

<matplotlib.axes._subplots.AxesSubplot at 0xaeff4a8>

机器学习 多变量分布 多变量分析图_机器学习 多变量分布_13

 

 

6.多层面板分类图

In [15]:

sns.factorplot(x="day",y="total_bill",hue="smoker",data=tips)

Out[15]:

<seaborn.axisgrid.FacetGrid at 0xb0827f0>

机器学习 多变量分布 多变量分析图_数据_14


 

  • kind="bar":指定画图种类

In [16]:

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

Out[16]:

<seaborn.axisgrid.FacetGrid at 0xb1b3780>

机器学习 多变量分布 多变量分析图_数据集_15

 

 

  • 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>

机器学习 多变量分布 多变量分析图_数据_16

 

 

  • 任何一种图形都可以画出来。基于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>

 

机器学习 多变量分布 多变量分析图_数据_17