1. 程式人生 > >Matplotlib官方文件詳解

Matplotlib官方文件詳解

在做資料分析的時候,能夠將抽象的資料以圖的形式展示出來,毫無疑問,能夠大大的增強資料的可讀性,在資料分析時,強大的Matplotlib毫無疑問撥得頭籌,以其強大的功能風靡整個資料分析界,這裡,我們就好好說一說Matplotlib這個庫。

首先,我們先把Matplotlib的官網放出來,這是一個神奇的網站,當我們想畫一個圖但不知道怎麼畫出來的時候,就可以去這個網站上去找了,網站上羅列出來了各式各樣的繪圖形式,你可以從中挑選你想畫的圖的樣子然後點進去照著說明畫出自己想要的圖。

連結:http://matplotlib.org/index.html

-----------------------------------------------------------------------------------------我是一條可愛的分割線--------------------------------------------------------------------------------------------------------------------

首先,想畫出一幅圖,我們要有一張“畫布”,定義畫布有以下幾種方法:

(1)使用subplot函式:subplot(nrows, ncols, plot_number) 

 引數分別為行數,列數,第幾幅圖

 定義完“畫布”後,由於這個函式我們沒有定義ax,因此就可以直接使用plt.(Matplot中的各種畫圖函式,例如scatter/bar/hist)了

 各種圖形如下:http://matplotlib.org/tutorials/introductory/sample_plots.html

 線狀圖Line Plot:plt.plot(x, y)

 。。。。。。。。。。。。。。。。。

 tips:使用上面的畫圖函式去畫圖,必須嚴格的表示出x,y,然後將其作為引數放到畫圖的函式中去,實際上這樣在我們面臨一個大的Dataframe格式的資料時,並不好用,我們如果將想要畫出的資料以list的形式表示出來,需要付出很大的力氣。因此,為了節省不必要的工作量,我們可以使用另外兩種方法去應對這種情況。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------我們可以使用pandas裡面自帶的plot()函式來畫圖,這個函式的優勢在於,不用像上面的第一種方法那樣將x和y軸的資料具體的表示出來,只要處理的是pandas形式的資料,包括Series和Dateframe兩種形式,plot函式通常會以Series的index為橫座標,以Series的column為縱座標畫圖。

Series/Dataframe.plot(kind= 'line', 'bar', 'barh', 'kde'),根據引數kind來選擇不同的圖

如果Dateframe的column不止一列,那麼可以根據引數stacked來選擇每一列的資料是否累加在一起,stacked=False表示不累加,stacked=True表示累加。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------       以上兩種方法都是不需要定義ax,僅僅定義一個“畫布”fig就可以直接畫圖的方法。

(2)使用subplots()函式:subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

 通常使用方法:fig, (ax1,ax2,ax3,...) = plt.subplots(nrows,nclos,figsize=(m,n))

 這樣我們直接得到了“畫布”fig,“大畫布”fig下的若干“小畫布”ax1,ax2,.....,因此,我們定義好大小畫布後,可以直接以小畫圖為字首使用畫圖函式進行畫圖:

 ax1.plot/bar/.....(x,y) 就可以畫出圖了

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

可以使用seaborn進行畫圖,seaborn裡有很多畫圖的函式,這些函式中都有一個ax引數,這個引數可以指定在哪一個畫布或者小畫布上畫圖,也由幾個函式沒有ax這個引數,對於這種函式,seaborn與matplotlib的區別就在於,如果不在一個“畫布”上畫多幅圖的話,seaborn不需要定義“畫布”,而matplotlib必須定義“畫布”,同樣,seaborn也不需要plt.show()來顯示圖片。

tips:只有在一個“畫布”上畫出多幅圖的情況下,我們才需要定義fig和axis,但是無論需要還是不需要在一個“畫布”畫多幅圖,我們都需要plt.show()函式來將圖片展示出來。

      下一篇部落格,將詳細介紹seaborn中的各個畫圖函式,敬請期待。