seaborn庫中柱狀圖繪制詳解


        柱狀圖用於反映數值變量的集中趨勢,用誤差線估計變量的差值統計。理解誤差線有助於我們准確的獲取柱狀圖反映的信息,因此打算先介紹一下誤差線方面的內容,然后介紹一下利用seaborn庫繪制柱狀圖。

1.誤差線的理解

       誤差線源於統計學,表示數據誤差(或不確定性)范圍,以更准確的方式呈現數據。當label上有一組采樣數據時,一般將這組數據的平均值作為該label上標注的值,而用誤差線表示該均值可能的誤差范圍。誤差線可以用標准差(standard deviation,SD)、標准誤(standard error,SE)和置信區間表示,使用時可選用任意一種表示方法並作相應說明即可。當label上值有一個數據時,則不需要標注誤差線。

  • 標准差

       在實際中,總體的標准差總是未知的,我們一般用樣本標准差來估計總體標准差,樣本標准差s定義為 

                                                                      

      其中u為樣本均值,則誤差線的范圍為(u-s,u+s)

  • 標准誤

       當多次進行重復采樣時,會得到多組數據,每組數據都有一個平均值,這些平均值間是有差異的,盡管在每組數據量較大時,這個差異會比較小,標准誤表示的就是平均值的誤差范圍。可以對標准誤\sigma _{\bar{x}}做以下估計

                                                                            

       其中s為樣本的標准差,則誤差線的范圍為(u-\sigma _{\bar{x}},u+\sigma _{\bar{x}})

  • 置信區間

       由於bar上標明的值是樣本均值,這里實際上是對樣本均值進行區間估計得到的置信區間。一般作區間估計時,需要先獲知總體的分布,在實際中我們依據樣本的數據量來假設其總體的分布。當為大樣本數據情況時(一般數據量大於30),假設樣本服從正態分布,當數據量較小時(小於30)時假設樣本服從t-分布。當然,若已知總體分布時則不需要假設,包括接下來均值及標准差的計算,若已知時則不需要對其進行估計。

       當總體為正態分布時,誤差線的范圍為

                                                                     

       其中z^{*}依據區間置信度來計算,C表示置信度(只列出常見的置信度)

                                                           

       當總體為t-分布時,誤差線的范圍為

                                                                       

       其中t^{*}依據置信度及樣本自由度(N-1)來計算,一般查詢t-分布得到

                                 

                                                          

       這里以均值u的置信區間為例,順便說一下對置信區間的理解。置信區間(置信度為p)是指在重復采集n次時,得到的樣本均值有np次可能落在置信區間內,我們不能對置信區間作如下解讀:總體均值有p的可能性在置信區間內,這是不對的,在一次采樣完成后,按照頻率學派的觀點,只有“在區間內”、“在區間外”這兩種情況,而不能討論可能性(可能性是貝葉斯學派的觀點)。

      通過以上的說明,可以獲知這樣一點內容:當誤差線比較“長”時,一般要么是數據離散程度大,要么是數據樣本少。

2.利用seaborn.barplot()繪制柱狀圖

     seaborn.barplot()繪圖參數的說明為:

  • x:指定label值,可以是一個序列
  • y:對應每個label上的數據,可以是一個序列
  • hue:指定分類變量,其使用示例如下,左圖是不使用hue參數時的圖形,右圖是使用hue的圖形
>>> a=np.arange(40).reshape(10,4) df=pd.DataFrame(a,columns=['a','b','c','d']) df['a']=[0,4,4,8,8,8,4,12,12,12] df['d']=list('aabbabbbab') sns.barplot(x='a',y='b',data=df,hue='d')
     
  • data:使用的數據集。在上面的例子中,當指定"data=df"時,可以在“x=”、"y="處直接使用column名稱,否則需要使用"x=data['a']"的形式
  • order,hue_order:order控制bar繪制的順序,hue_order控制一個bra內每個類繪圖順序,例如分別執行以下代碼
>>> sns.barplot(x='a',y='b',data=df,order=[8,4,12,0]) #控制bar繪制順序,左圖 sns.barplot(x='a',y='b',data=df,hue_order=['b','a']) #控制bar繪制順序,右圖

  ​  

  • estimator:設置每一個label上顯示的統計量類型,默認為平均值,可修改為最大值、中位值等。注意,若修改為非平均值,那么前面所提到的誤差線都需要做修改,因為前面的誤差線解釋都是基於平均值的。
  • ci:在seaborn.barplot()中誤差線默認表示的是均值的置信區間,因此當ci為(0,100)間的值時表示置信區間的置信度,默認為95;ci還可以取值為'sd',此時誤差線表示的是標准誤差;當ci取值為None時,則不顯示誤差線
  • n_boot:計算代表置信區間的誤差線時,默認會采用bootstrap抽樣方法(在樣本量較小時比較有用),該參數控制bootstrap抽樣的次數
  • units:該參數的解釋我暫時還未弄明白
  • orient:設置柱狀圖水平繪制還是豎直繪制,"h"表示水平,“v”表示豎直。
  • color:設置bar的顏色,這里似乎用於將所有的bar設置為同一種顏色
  • pattle:調色板,設置bar的以不同顏色顯示,所有的顏色選擇都要是matplotlib是能識別的顏色
  • saturation:設置顏色的飽和度取值為[0,1]間
  • errcolor:設置誤差線的顏色,默認為黑色
  • errwidth:設置誤差線的顯示線寬
  • capsize:設置誤差線頂部、底端處橫線的顯示長度
  • dodge:當使用分類參數“hue”時,可以通過dodge參數設置是將不同的類分別用一個bar表示,還是在一個bar上通過不同顏色表示,下圖總左邊是dodge=True,右邊是dodge=False,默認為True。

    

  • ax:選擇將圖形顯示在哪個Axes對象上,默認為當前Axes對象
  • kwargs:matplotlib.plot.bar()中其它的參數

 返回值:ax,matplotlib.Axes對象

          

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM