繪製直方圖
直方圖由豎立在x軸上的多個相鄰的矩形組成,這些矩形把x軸拆分為一段段彼此不重疊的線段(線段兩個端點所標識的數據範圍也叫面元),矩形的面積跟落在其所對應的面元的元素數量成正比。這種可視化方法常被用於樣本分布等統計研究。
pyplot用於繪製直方圖的函數為hist( ),該函數具有一個其他繪圖函數所沒有的功能。它除了繪製直方圖外,還以元組形式返回直方圖的計算結果。事實上,hist( )函數還可以實現直方圖的計算。也就是說,它能夠接受一系列樣本個體和期望的面元數量作為參數,會把樣本範圍分為多個區間(面元),然後計算每個面元所包含的樣本個體的數量,運算結果除了以圖形形式表示外,還能以元組形式返回。
(n, bins, patches)
要理解上述操作,最好的辦法莫過於看一個實際的例子。首先使用random.randint( )函數生成100個0~100的隨機數作為樣本。
現在,我們把剛生成的樣本數據作為參數傳給hist( )函數,創建一個直方圖。例如,你想把樣本個體分到20個面元中(如未指定,默認分為10個面元),關鍵字參數bin的值為20。
條狀圖
另外一種常用的圖表類型為條狀圖。它跟直方圖很相似,只不過x軸表示的不是數值而是類別。用matplotlib的bar( )函數生成條狀圖很簡單。
用上述幾行代碼就能繪製出如下所示的條狀圖。
如上所示,x軸上所有的標籤顯示在每個長條的左下角。但是由於每個長條對應的是一種類別,最好用刻度標籤標明其類別,方法是把表示各個類別的字符串傳遞給xticks( )參數。至於刻度標籤的位置,你需要把表示它們在x軸上位置的數值列表傳遞給xticks( )函數,作為它的第一個參數。最終,將得到如下所示的條狀圖。
實際上,我們還可以藉助很多其他步驟進一步改進條狀圖。每一種改進方法都是通過在bar( )函數中添加特定的參數來實現的。例如,把包含標準差的列表傳給yerr關鍵字參數,就能添加標準差。這個參數常跟error_kw參數一起使用,而後者又接收其他可用於顯示誤差線的關鍵字參數。常用的兩個是eColor和capsize,ecolor指定誤差線的顏色,而capsize指定誤差線兩頭橫線的寬度。
還有一個參數叫做alpha,它控制的是彩色條狀圖的透明度。alpha的取值範圍為0~1。0表示對象完全透明,1表示對象顏色完全填充。
我們可以像下面這樣在圖表中添加圖例,它控制的事彩色條狀圖的透明度。
水平條狀態圖
前面講的都是沿垂直方向排列的條狀圖,實際上還有水平方向的條狀圖。這種模式的條狀圖用barh( )函數實現,bar( )函數的參數和關鍵字參數對該函數依然有效。唯一需要注意的是,兩條軸的用途跟垂直條狀圖剛好相反。水平條狀圖中,類別分布在y軸上,數值顯示在x軸。