1. 程式人生 > >一個matplotlib 畫K線圖 +一個高效的畫圖工具Serborn

一個matplotlib 畫K線圖 +一個高效的畫圖工具Serborn

http://www.financecomputing.net/wordpress/?p=1047

Seaborn

Matplotlib是Python主要的繪相簿。但是,我不建議你直接使用它,原因與開始不推薦你使用NumPy是一樣的。雖然Matplotlib很強大,它本身就很複雜,你的圖經過大量的調整才能變精緻。因此,作為替代,我推薦你一開始使用Seaborn。Seaborn本質上使用Matplotlib作為核心庫(就像Pandas對NumPy一樣)。我將簡短地描述下seaborn的優點。具體來說,它可以:

  1. 預設情況下就能建立賞心悅目的圖表。(只有一點,預設不是jet colormap
  2. 建立具有統計意義的圖
  3. 能理解pandas的DataFrame型別,所以它們一起可以很好地工作。

雖然anaconda預裝了pandas,卻沒安裝seaborn。可以通過conda install seaborn輕鬆地安裝。

具有統計意義的圖

In [5]: Python
1%matplotlib inline# IPython magic to create plots within cells
In [7]:Python
1 2 3 4 5 6 importseaborn assns # Load one of the data sets that come with seaborn
tips=sns.load_dataset("tips") sns.jointplot("total_bill","tip",tips,kind='reg');
  如你所見,僅通過一行程式碼,我們就建立了一個漂亮複雜的統計圖,其中包含擁有置信區間的最擬合迴歸直線、邊界圖,以及相關係數。使用matplotlib重新繪製這幅圖的話需要相當多的(醜陋)程式碼,包括呼叫scipy執行線性迴歸並手動利用線性迴歸方程繪製直線(我甚至想不出怎麼在邊界繪圖,怎麼計算置信區間)。上面和下面的例子都摘自教程“the tutorial on quantitative linear models
”。

與Pandas的DataFrame很好地工作

資料有自己的結構。通常我們感興趣的包含不同的組或類(這種情況下使用pandas中groupby的功能會讓人感到很神奇)。比如tips(小費)的資料集是這樣的:

In [9]: Python
1tips.head()
Out[9]:
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3
221.013.50MaleNoSunDinner3
323.683.31MaleNoSunDinner2
424.593.61FemaleNoSunDinner4

我們可能想知道吸菸者給的小費是否與不吸菸的人不同。沒有seaborn的話,這需要使用pandas的groupby功能,並通過複雜的程式碼繪製線性迴歸直線。使用seaborn的話,我們可以給col引數提供列名,按我們的需要劃分資料:

In [11]:Python
1 sns.lmplot("total_bill","tip",tips,col="smoker");
 

很整潔吧?

隨著你研究得越深,你可能想更細粒度地控制這些圖表的細節。因為seaborn只是呼叫了matplotlib,那時你可能會想學習這個庫。然而,對絕大部分工作來說我還是喜歡使用seaborn