1. 分類數據可視化 - 分類散點圖
stripplot( ) / swarmplot( )
sns.stripplot(x="day",y="total_bill",data=tips,jitter = True, size = 5, edgecolor = 'w',linewidth=1,marker = 'o')
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns % matplotlib inline sns.set_style("whitegrid") sns.set_context("paper") # 設置風格、尺度 import warnings warnings.filterwarnings('ignore') # 不發出警告
# 1、stripplot() # 按照不同類別對樣本數據進行分布散點圖繪制 tips = sns.load_dataset("tips") print(tips.head()) # 加載數據
print(tips['day'].value_counts())
sns.stripplot(x="day", # x → 設置分組統計字段 y="total_bill", # y → 數據分布統計字段 # 這里xy數據對調,將會使得散點圖橫向分布 data=tips, # data → 對應數據 jitter = True, # jitter → 當點數據重合較多時,用該參數做一些調整,也可以設置間距如:jitter = 0.1 size = 5, edgecolor = 'w',linewidth=1,marker = 'o' # 設置點的大小、描邊顏色或寬度、點樣式 )
1.1 stripplot()
hue參數可再分類
# 1、stripplot() 通過hue參數再分類 sns.stripplot(x="sex", y="total_bill", hue="day", data=tips, jitter=True)
# 1、stripplot() 設置調色盤 sns.stripplot(x="sex", y="total_bill", hue="day", data=tips, jitter=True, palette="Set2", # 設置調色盤 dodge=True, # 是否拆分 )
# 1、stripplot() 篩選分類類別 print(tips['day'].value_counts()) # 查看day字段的唯一值 sns.stripplot(x="day", y="total_bill", data=tips,jitter = True, order = ['Sat','Sun']) # order → 篩選類別
1.2 swarmplot()分簇散點圖
# 2、swarmplot() # 分簇散點圖 sns.swarmplot(x="total_bill", y="day", data=tips, size = 5, edgecolor = 'w',linewidth=1,marker = 'o', palette = 'Reds') # 用法和stripplot類似
2. 分類數據可視化 - 分布圖
boxplot( ) / violinplot( ) / lvplot( )
2.1 boxplot()箱型圖
sns.boxplot(x="day", y="total_bill", data=tips,
linewidth = 2, # 線寬
width = 0.8, # 箱之間的間隔比例
fliersize = 3, # 異常點大小
palette = 'hls', # 設置調色板
whis = 1.5, # 設置IQR
notch = True, # 設置是否以中值做凹槽
order = ['Thur','Fri','Sat','Sun'], # 篩選類別
# 1、boxplot() # 箱型圖 sns.boxplot(x="day", y="total_bill", data=tips, linewidth = 2, # 線寬 width = 0.8, # 箱之間的間隔比例 fliersize = 3, # 異常點大小 palette = 'hls', # 設置調色板 whis = 1.5, # 設置IQR notch = True, # 設置是否以中值做凹槽 order = ['Thur','Fri','Sat','Sun'], # 篩選類別 ) # 繪制箱型圖 sns.swarmplot(x="day", y="total_bill", data=tips,color ='k',size = 3,alpha = 0.8) # 可以添加散點圖
# 1、boxplot() 通過hue參數再分類 sns.boxplot(x="day", y="total_bill", data=tips, hue = 'smoker', palette = 'Reds') # 繪制箱型圖 #sns.swarmplot(x="day", y="total_bill", data=tips,color ='k',size = 3,alpha = 0.8) # 可以添加散點圖
2.2 violinplot()小提琴圖
sns.violinplot(x="day", y="total_bill", data=tips,
linewidth = 2, # 線寬
width = 0.8, # 箱之間的間隔比例
palette = 'hls', # 設置調色板
order = ['Thur','Fri','Sat','Sun'], # 篩選類別
scale = 'area', # 測度小提琴圖的寬度:area-面積相同,count-按照樣本數量決定寬度,width-寬度一樣
gridsize = 50, # 設置小提琴圖邊線的平滑度,越高越平滑
inner = 'box', # 設置內部顯示類型 → “box”, “quartile”, “point”, “stick”, None
#bw = 0.8 # 控制擬合程度,一般可以不設置
)
# 2、violinplot() 小提琴圖 sns.violinplot(x="day", y="total_bill", data=tips, linewidth = 2, # 線寬 width = 0.8, # 箱之間的間隔比例 palette = 'hls', # 設置調色板 order = ['Thur','Fri','Sat','Sun'], # 篩選類別 scale = 'area', # 測度小提琴圖的寬度:area-面積相同,count-按照樣本數量決定寬度,width-寬度一樣 gridsize = 50, # 設置小提琴圖邊線的平滑度,越高越平滑 inner = 'box', # 設置內部顯示類型 → “box”, “quartile”, “point”, “stick”, None #bw = 0.8 # 控制擬合程度,一般可以不設置 ) # 用法和boxplot類似
# 2、violinplot() 通過hue參數再分類 sns.violinplot(x="day", y="total_bill", data=tips, hue = 'smoker', palette="muted", split=True, # 設置是否拆分小提琴圖 inner="quartile")
sns.violinplot()+ sns.swarmplot()小提琴圖結合散點圖
# 2、violinplot() 結合散點圖 sns.violinplot(x="day", y="total_bill", data=tips, palette = 'hls', inner = None) sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5) # 插入散點圖
2.3 lvplot() LV圖表
sns.lvplot(x="day", y="total_bill", data=tips, palette="mako",
#hue = 'smoker',
width = 0.8, # 箱之間間隔比例
linewidth = 12,
scale = 'area', # 設置框的大小 → “linear”、“exonential”、“area”
k_depth = 'proportion', # 設置框的數量 → “proportion”、“tukey”、“trustworthy”
)
# 3、lvplot() LV圖表 sns.lvplot(x="day", y="total_bill", data=tips, palette="mako", #hue = 'smoker', width = 0.8, # 箱之間間隔比例 linewidth = 12, scale = 'area', # 設置框的大小 → “linear”、“exonential”、“area” k_depth = 'proportion', # 設置框的數量 → “proportion”、“tukey”、“trustworthy” ) # 繪制LV圖 sns.swarmplot(x="day", y="total_bill", data=tips,color ='k',size = 3,alpha = 0.8) # 可以添加散點圖
3. 分類數據可視化 - 統計圖
barplot( ) / countplot( ) / pointplot( )
3.1 barplot()柱狀圖
sns.barplot(x="sex", y="survived", hue="class", data=titanic,
palette = 'hls',
order = ['male','female'], # 篩選類別
capsize = 0.05, # 誤差線橫向延伸寬度
saturation=.8, # 顏色飽和度
errcolor = 'gray',errwidth = 2, # 誤差線顏色,寬度
ci = 'sd' # 置信區間誤差 → 0-100內值、'sd'、None
)
# 1、barplot() # 柱狀圖 - 置信區間估計 # 置信區間:樣本均值 + 抽樣誤差 titanic = sns.load_dataset("titanic") print(titanic.head()) print('-----') # 加載數據
sns.barplot(x="sex", y="survived", hue="class", data=titanic, palette = 'hls', order = ['male','female'], # 篩選類別 capsize = 0.05, # 誤差線橫向延伸寬度 saturation=.8, # 顏色飽和度 errcolor = 'gray',errwidth = 2, # 誤差線顏色,寬度 ci = 'sd' # 置信區間誤差 → 0-100內值、'sd'、None )
print(titanic.groupby(['sex','class']).mean()['survived']) print(titanic.groupby(['sex','class']).std()['survived']) # 計算數據
# 1、barplot() # 柱狀圖 - 置信區間估計 sns.barplot(x="day", y="total_bill", hue="sex", data=tips, palette = 'Blues',edgecolor = 'w') tips.groupby(['day','sex']).mean() # 計算數據
# 1、barplot() # 柱狀圖 - 置信區間估計 crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False) print(crashes.head()) # 加載數據 f, ax = plt.subplots(figsize=(6, 15)) # 創建圖表 sns.set_color_codes("pastel") sns.barplot(x="total", y="abbrev", data=crashes, label="Total", color="b",edgecolor = 'w') # 設置第一個柱狀圖 sns.set_color_codes("muted") sns.barplot(x="alcohol", y="abbrev", data=crashes, label="Alcohol-involved", color="b",edgecolor = 'w') # 設置第二個柱狀圖 ax.legend(ncol=2, loc="lower right") sns.despine(left=True, bottom=True)
3.2 countplot()計數柱狀圖
sns.countplot(x="class", hue="who", data=titanic,palette = 'magma')
# 2、countplot() 計數柱狀圖 sns.countplot(x="class", hue="who", data=titanic,palette = 'magma') #sns.countplot(y="class", hue="who", data=titanic,palette = 'magma') # x/y → 以x或者y軸繪圖(橫向,豎向) # 用法和barplot相似
3.3 pointplot()折線圖
# 3、pointplot() # 折線圖 - 置信區間估計 sns.pointplot(x="time", y="total_bill", hue = 'smoker',data=tips, palette = 'hls', dodge = True, # 設置點是否分開 join = True, # 是否連線 markers=["o", "x"], linestyles=["-", "--"], # 設置點樣式、線型 ) tips.groupby(['time','smoker']).mean()['total_bill'] # 計算數據 # # 用法和barplot相似