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.重疊是很常見的現象,可是重疊影響觀察數據的量,有以下方法解決:javascript

1-1.加入抖動量jittercss

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

1-2. 畫分簇散點圖:它使用避免重疊點的算法將分類軸上的每一個散點圖點定位html

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.合圖html5

  • 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 小提琴圖分割特徵java

  • 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兩種圖相互疊加python

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.寬形數據jquery

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

6.多層面板分類圖linux

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>
 
相關文章
相關標籤/搜索