數據可視化(4)-Seaborn系列 | 分類圖catplot()
- 2019 年 10 月 4 日
- 筆記
本篇是《Seaborn系列》文章的第4篇-分類圖。
分類圖
分類圖catplot()
解析:
catplot() 分類圖(它是下面8種圖的介面,下面八種圖表均可通過指定kind參數來繪製)
1.stripplot() 分類散點圖
2.swarmplot() 能夠顯示分布密度的分類散點圖
3.boxplot() 箱圖、盒形圖
4.violinplot() 小提琴圖
5.boxenplot() 增強箱圖
6.pointplot() 點圖
7.barplot() 條形圖
8.countplot() 計數圖
函數原型
seaborn.catplot(x=None, y=None, hue=None, data=None, row=None, col=None, col_wrap=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, order=None, hue_order=None, row_order=None, col_order=None, kind='strip', height=5, aspect=1, orient=None, color=None, palette=None, legend=True, legend_out=True, sharex=True, sharey=True, margin_titles=False, facet_kws=None, **kwargs)
參數解讀

必須的參數data 其他參數均為可選; data:是DataFrame類型的; x,y為數據中變數的名稱(如上表,date,name,age,sex為數據欄位變數名); row,col:數據中變數的名稱 作用:設置分類變數將決定網格的分面。 kind:字元串 要繪製的繪圖類型 (對應於分類繪圖功能的名稱:"count"-統計圖, "point"-點, "bar"-條形, "strip"-條形, "swarm"-群形, "box"-框形, "violin"-小提琴形, or"boxen"-盒形.) col_wrap:int類型數值 作用:讓每行顯示指定數量的圖,如果超過該數量,則多行顯示。 orient:方向:v或者h 作用:設置圖的繪製方向(垂直或水平) 如何選擇:一般是根據輸入變數的數據類型(dtype)推斷出來。
案例教程
import seaborn as sns sns.set(style="ticks") exercise = sns.load_dataset("exercise") exercise[:5]
import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 獲取數據 exercise = sns.load_dataset("exercise") """ 案例1:基本分類圖 """ sns.catplot(x="time", y="pulse", hue="kind", data=exercise) plt.show()
import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 獲取數據 exercise = sns.load_dataset("exercise") """ 案例2:通過設置kind來指定繪製的圖類型 kind="violin" 則表示繪製小提琴圖 """ sns.catplot(x="time", y="pulse", hue="kind",data=exercise, kind="violin") plt.show()
import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 獲取數據 exercise = sns.load_dataset("exercise") """ 案例3:根據col分類,以列布局繪製多列圖 設置col,根據指定的col的變數名,以列的形式顯示(eg.col='diet',則在列的方向上顯示,顯示圖的數量為diet列中對值去重後的數量) """ sns.catplot(x="time", y="pulse", hue="kind",col="diet", data=exercise) plt.show()
import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 獲取數據 exercise = sns.load_dataset("exercise") """ 案例4:繪圖時,設置圖(facets)的高度和寬度比 """ sns.catplot(x="time", y="pulse", hue="kind",col="diet", data=exercise,height=4, aspect=.8) plt.show()
import seaborn as sns sns.set(style="ticks") # 使用 titanic數據集 titanic = sns.load_dataset("titanic") # 獲取數據 #去掉deck這一列中值為空的數據 data=titanic[titanic.deck.notnull()] data[:10]
import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 獲取數據 #去掉deck這一列中值為空的數據 data=titanic[titanic.deck.notnull()] """ 案例5:利用catplot()繪製柱狀圖 kind="count" 設置col_wrap一個數值,讓圖每行只顯示數量為該數值的列,多餘的另起一行顯示 """ sns.catplot(x="alive", col="deck", col_wrap=4,data=data,kind="count", height=2.5, aspect=.8) plt.show()

import seaborn as sns import matplotlib.pyplot as plt sns.set(style="ticks") # 獲取數據 #去掉deck這一列中值為空的數據 data=titanic[titanic.deck.notnull()] # 水平繪圖,並將其他關鍵字參數傳遞給繪圖函數 """ 案例6:利用catplot()繪製小提琴圖 kind="violin" orient設置圖的方向 """ sns.catplot(x="age", y="embark_town",hue="sex", row="class", data=data, orient="h", height=2, aspect=3, palette="Set3", kind="violin",dodge=True, cut=0, bw=.2) plt.show()

案例地址
案例程式碼已上傳:Githubhttps://github.com/Vambooo/SeabornCN
整理製作:數據分析與可視化學研社
