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>
- 显示值的集中趋势可以用柱状图
In [11]:
sns.barplot(x="sex",y="survived",hue="class",data=titanic)
Out[11]:
<matplotlib.axes._subplots.AxesSubplot at 0xb17ea90>
- 点图可以更好的描述变化差异
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>