sns.barplot() 畫條形圖
阿新 • • 發佈:2020-07-21
sns.barplot() :條形圖主要展現的是每個矩形高度的數值變數的中心趨勢的估計
條形圖只顯示平均值(或其他估計值)
注:countplot引數和barplot基本差不多,可以對比著記憶,有一點不同的是countplot中不能同時輸入x和y,且countplot沒有誤差棒,
類別特徵barplot要同時傳入x,y
seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)
引數說明
x,y,hue:資料欄位變數名(如上表,date,name,age,sex為資料欄位變數名) data: DataFrame,陣列或陣列列表 order,hue_order:字串列表 作用:顯式指定分類順序,eg. order=[欄位變數名1,欄位變數名2,...] estimator:可回撥函式 作用:設定每個分類箱的統計函式 ci:float或者"sd"或None 在估計值附近繪製置信區間的大小,如果是"sd", 則跳過bootstrapping並繪製觀察的標準差, 如果為None,則不執行bootstrapping,並且不繪製錯誤條。 n_boot:int 計算置信區間時使用的引導迭代次數 orient: v | h 圖的顯示方向(垂直或水平,即橫向或縱向), 這通常可以從輸入變數的dtype推斷得到 color:matplotlib顏色 palette:除錯板名稱,列表或字典型別 作用:設定hue指定的變數的不同級別顏色。 saturation 飽和度:float errcolor : matplotlib color 作用:表示置信區間的線條顏色 errwidth:float 作用:表示誤差線的厚度 capsize:float 作用:表示誤差線上"帽"的寬度(誤差線上的橫線的寬度) dodge:bool 作用:使用色調巢狀時,是否應沿分類軸移動元素。
同樣使用泰坦尼克號資料作為例子
#模擬生成資料集的方法 %matplotlib inline import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt plt.rc("font",family="SimHei",size="12") #用於解決中文顯示不了的問題 sns.set_style("whitegrid") boolean=[True,False] gender=['男','女'] color=['green','blue','yellow'] data=pd.DataFrame({'height':np.random.randint(150,190,100), 'weight':np.random.randint(40,90,100), 'smoker':[boolean[x] for x in np.random.randint(0,2,100)], 'gender':[gender[x] for x in np.random.randint(0,2,100)], 'age':np.random.randint(15,90,100), 'color':[color[x] for x in np.random.randint(0,len(color),100)]}) #x,y要同時出現 sns.barplot(x="color",y="age",data=data) #或者直接使用df[col] sns.barplot(x=data["color"],y=data["age"])
#hue:根據hue列分類 sns.barplot(x="color",y="age",data=data,hue="gender")
#order, hue_order (lists of strings):用於控制條形圖的順序 fig,axes=plt.subplots(1,2) sns.barplot(x="gender",y="age",data=data,ax=axes[0]) sns.barplot(x="gender",y="age",data=data,ax=axes[1],order=["女","男"])
#estimator=(function name)控制條形圖的取整列資料的什麼值 fig,axes=plt.subplots(1,2) sns.barplot(x="gender",y="age",data=data,ax=axes[0]) #左圖,預設為平均值 sns.barplot(x="gender",y="age",estimator=np.median,data=data,ax=axes[1]) #右圖,中位數
#ci(float):統計學上的置信區間(在0-100之間),若填寫"sd",則誤差棒用標準誤差。(預設為95) fig,axes=plt.subplots(1,2) sns.barplot(x="color",y="age",data=data,ci=0,ax=axes[0]) #左圖 sns.barplot(x="color",y="age",data=data,ci="sd",ax=axes[1]) #右圖
#capsize(float): 設定誤差棒帽條(上下兩根橫線)的寬度 fig,axes=plt.subplots(1,2) sns.barplot(x="color",y="age",data=data,ax=axes[0],capsize=.2) #左圖 sns.barplot(x="color",y="age",data=data,ax=axes[1],capsize=.9) #右圖
#palette:調色盤,控制不同的顏色style fig,axes=plt.subplots(2,1) sns.barplot(x="color",y="age",data=data,ax=axes[0]) #上圖 sns.barplot(x="color",y="age",data=data,palette="Set3",ax=axes[1]) #下圖
#X,Y軸互換 fig,axes=plt.subplots(1,2) sns.barplot(x="age",y="color",data=data,ax=axes[0]) #左圖 sns.barplot(x="color",y="age",data=data,ax=axes[1]) #右圖
全部程式碼如下
# -*- coding: utf-8 -*- """ Created on Tue Jul 21 10:52:00 2020 @author: Admin """ #模擬生成資料集的方法 %matplotlib inline import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt plt.rc("font",family="SimHei",size="12") #用於解決中文顯示不了的問題 sns.set_style("whitegrid") boolean=[True,False] gender=['男','女'] color=['green','blue','yellow'] data=pd.DataFrame({'height':np.random.randint(150,190,100), 'weight':np.random.randint(40,90,100), 'smoker':[boolean[x] for x in np.random.randint(0,2,100)], 'gender':[gender[x] for x in np.random.randint(0,2,100)], 'age':np.random.randint(15,90,100), 'color':[color[x] for x in np.random.randint(0,len(color),100)]}) #x,y要同時出現 sns.barplot(x="color",y="age",data=data) #或者直接使用df[col] sns.barplot(x=data["color"],y=data["age"]) #hue:根據hue列分類 sns.barplot(x="color",y="age",data=data,hue="gender") #order, hue_order (lists of strings):用於控制條形圖的順序 fig,axes=plt.subplots(1,2) sns.barplot(x="gender",y="age",data=data,ax=axes[0]) sns.barplot(x="gender",y="age",data=data,ax=axes[1],order=["女","男"]) #estimator=(function name)控制條形圖的取整列資料的什麼值 fig,axes=plt.subplots(1,2) sns.barplot(x="gender",y="age",data=data,ax=axes[0]) #左圖,預設為平均值 sns.barplot(x="gender",y="age",estimator=np.median,data=data,ax=axes[1]) #右圖,中位數 #ci(float):統計學上的置信區間(在0-100之間),若填寫"sd",則誤差棒用標準誤差。(預設為95) fig,axes=plt.subplots(1,2) sns.barplot(x="color",y="age",data=data,ci=0,ax=axes[0]) #左圖 sns.barplot(x="color",y="age",data=data,ci="sd",ax=axes[1]) #右圖 #capsize(float): 設定誤差棒帽條(上下兩根橫線)的寬度 fig,axes=plt.subplots(1,2) sns.barplot(x="color",y="age",data=data,ax=axes[0],capsize=.2) #左圖 sns.barplot(x="color",y="age",data=data,ax=axes[1],capsize=.9) #右圖 #palette:調色盤,控制不同的顏色style fig,axes=plt.subplots(2,1) sns.barplot(x="color",y="age",data=data,ax=axes[0]) #上圖 sns.barplot(x="color",y="age",data=data,palette="Set3",ax=axes[1]) #下圖 #X,Y軸互換 fig,axes=plt.subplots(1,2) sns.barplot(x="age",y="color",data=data,ax=axes[0]) #左圖 sns.barplot(x="color",y="age",data=data,ax=axes[1]) #右圖