close

此文是《10周入門資料分析》系列的第17篇

想瞭解學習路線,可以先閱讀 學習計畫 | 10周入門資料分析

本篇介紹第三個包 matplotlib

matplotlib是一個用於製作圖表的繪圖包。

Matplotlib API入門

1、Figure 和 Subplot

matplotlib的圖像都位於Figure物件中。

帶有三個subplot的Figure:

這些由fig.add_subplot所返回的物件是AxesSubplot物件,直接調用它們的實例方法就可以在其它空著的格子裡畫圖了。

這時發出一條繪圖命令,matplotlib就會在最後一個用過的subplot上進行繪製(如果沒有會創建一個):

K — :一個線型選項,用於告訴matplotlib繪製黑色虛線圖。

依次畫出虛線、長條圖、散點圖。

根據特定佈局創建Figure和subplot的簡便方法:plt.subplots, 它可以創建一個新的Figure,並返回一個含有已創建的subplot物件的NumPy陣列:

可以對 axes陣列進行索引,就像是一個二維陣列一樣:

還可以通過sharex和sharey指定subplot應該具有相同的X軸或Y軸(刻度),在比較相同範圍的資料時用,否則matplotlib會自動縮放各圖表的界限。

2、調整subplot周圍的間距

預設情況下,matplotlib會在subplot週邊留下一定的邊距,在subplot之間留下一定的間距。間距跟圖像的高度和寬度有關。

利用Figure的subplots_adjust方法修改間距。

下面的例子間距收縮到 0:

軸標籤重疊了,matplotlib不會檢查標籤是否重疊,這時要自己設定刻度位置和刻度標籤。

可以在matplotlib的文檔中找到各種圖表類型。

3、顏色、標記和線型

完整的linestyle列表參見plot的文檔。

ax.plot(x, y, ‘g — ‘) #根據x, y繪製綠色虛線
ax.plot(x, y, linestyle=’ — ‘, color=’g’)

要使用其他任意顏色可以通過指定其 RGB 值的形式(如 #CECECE)

matplotlib創建的是連續的線型圖,即點與點之間插值,非實際資料點預設是按線性方式插值的,可以通過drawstyle選項修改:

線型圖可以加上一些標記,以強調實際的資料點:

標記類型和線型必須放在顏色後面。

簡化的寫法:

4、刻度、標籤和圖例

過程型的pyplot介面

互動式使用,有xlim, xticks, xticklabels之類的方法,它們分別控制圖表的範圍,刻度位置,刻度標籤等。
調用時不帶引數,如plt.xlim()返回當前的X軸繪圖範圍。
調用時帶引數,如plt.xlim([0, 10])會將X軸的範圍設定為 0 到 10。

更為物件導向的原生matplotlib API。

5、設定標題、軸標籤、刻度以及刻度標籤

繪製一段隨機漫步:

修改X軸刻度:set_xticks(數值),set_xticklabels(其他任何的值用作刻度)。

6、添加圖例(legend)

添加圖例的方式:添加subplot的時候傳入label引數。

調用 ax.legend() 或 plt.legend() 來自動創建圖例。

loc告訴matplotlib要將圖例放在哪,best選擇最不礙事的位置。

去除圖例:不傳入label或傳入label=’_nolegend_’(注意有兩個底線)。

7、注釋以及在Subplot上繪圖

注釋:通過 text, arrow, annotate 等函數進行添加。

matplotlib有一些表示常見圖形的物件:稱為塊(patch),完整的集合位於matplotlib.patches。

創建一個塊物件shp,然後通過ax.add_patch(shp)將其添加到subplot中:

圖表物件:它們其實就是由塊組裝而成的。

8、將圖表保存到檔

利用 plt.savefig 可以將當前圖表保存到檔。(該方法相當於 Figure 物件的實例方法 savefig)。

如要將圖表保存為 SVG 檔:

兩個重要的選項:

  • dpi:控制“每英寸點數”解析度;
  • bbox_inches:可以剪除當前圖表周圍的空白部分。

得到一張帶有最小白邊且解析度為 400DPI 的 PNG 圖片:

savefig並非一定要寫入磁片,也可寫入任何檔型的物件,比如StringIO:

9、matplotlib配置

操作matplotlib配置系統的方式:Python 程式設計方式,即利用rc方法。

如將全域的圖像預設大小設定為 10 * 10,執行:

plt.rc(‘figure’, figsize=(10, 10))

rc的第一個引數:是希望自訂的對象(如’figure’, ‘axes’, ‘xtick’, ‘ytick’, ‘grid’, ‘legend’),這裡是figure。

可以跟一系列的關鍵字引數,將它們寫成一個字典:

全部的自訂選項:查閱matplotlib的設定檔matplotlibrc(位於 matplotlib/mpl-data 目錄中)。對該檔進行自訂,並將其放在目錄中,則每次使用matplotlib時就會載入該檔。

pandas中的繪圖函數

在pandas中,有行標籤、列標籤、分組資訊。

要製作一張完整的圖表,原本需要一大堆的matplotlib程式碼,現在只需一兩條簡潔的語句就可以了。pandas有許多能夠利用DataFrame物件資料組織特點來創建標準圖表的高級繪圖方法。

1、線型圖

Series和DataFrame都有一個用於生成各類圖表的plot方法,預設情況下它們都生成線型圖。

DataFrame的plot方法會在一個 subplot 中為各列繪製一條線,並自動創建圖例。

2、柱狀圖

垂直柱狀圖:Kind=’bar’
水準柱狀圖:Kind=’barh’

設定 stacked=True 即可為DataFrame生成堆積柱狀圖:

柱狀圖利用value_counts圖形化顯示Series中各值的出現頻率,如:

3、長條圖和密度圖

長條圖(histogram):是一種可以對值頻率進行離散化顯示的柱狀圖。

密度圖:通過計算「可能會產生觀測資料的連續概率分佈的估計而產生的。

一般的過程是將該分佈近似為一組核(如正態(高斯)分佈之類的較為簡單的分佈)。

密度圖也被稱作 KDE 圖(Kernel Density Estimate 核密度估計)。

長條圖和密度圖常被畫在一起,長條圖以規格化形式給出(以便給出面元密度),再在其上繪製核密度估計。

由兩個不同的標準正態分佈組成的雙峰分佈:

最後一行程式碼繪製的密度圖的最終結果:

4、散佈圖

散佈圖(scatter plot):是觀察兩個一維資料序列之間關係的有效手段。

matplotlib的scatter方法是繪製散佈圖的主要方法。

在探索式資料分析工作中,同時觀察一組變數的散佈圖是很有意義的。也被稱為散佈圖矩陣(scatter plot matrix)。

pandas提供了一個能從DataFrame創建散佈圖矩陣的 scatter_matrix 函數,它還支援在對角線上放置各變數的長條圖或密度圖。

不足之處,歡迎指正。

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。

已經有3000+的同好按贊我的臉書了,你不來嗎?XD

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 數據分析那些事 的頭像
    數據分析那些事

    Python資料分析(三)NumPy那些事的部落格

    數據分析那些事 發表在 痞客邦 留言(0) 人氣()