【數據科學系統學習】Python # 數據分析基本操做[三] matplotlib

咱們在上一篇介紹了 pandas,本篇介紹 matplotlib。編程


繪圖和可視化

一個用於建立出版質量圖表的桌面繪圖包。segmentfault

Matplotlib API入門

Figure 和 Subplot數組


matplotlib的圖像都位於Figure對象中。函數

帶有三個subplotFigure佈局

clipboard.png

clipboard.png

這些由fig.add_subplot所返回的對象是AxesSubplot對象,直接調用它們的實例方法就能夠在其它空着的格子裏畫圖了。spa

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

clipboard.png

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


clipboard.png

依次畫出虛線、直方圖、散點圖。code

clipboard.png

根據特定佈局建立Figuresubplot的簡便方法:plt.subplots, 它能夠建立一個新的Figure,並返回一個含有已建立的subplot對象的NumPy數組:對象

clipboard.png

clipboard.png

能夠對 axes數組進行索引,就像是一個二維數組同樣:

clipboard.png

還能夠經過sharexsharey指定subplot應該具備相同的X軸或Y軸(刻度),在比較相同範圍的數據時用,不然matplotlib會自動縮放各圖表的界限。


調整subplot周圍的間距


默認狀況下,matplotlib會在subplot外圍留下必定的邊距,在subplot之間留下必定的間距。間距跟圖像的高度和寬度有關。

利用Figuresubplots_adjust方法修改間距。

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

clipboard.png

clipboard.png

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

能夠在matplotlib的文檔中找到各類圖表類型。


顏色、標記和線型


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

ax.plot(x, y, 'g--')  #根據x, y繪製綠色虛線
ax.plot(x, y, linestyle='--', color='g')   #更明確的方式,和上面同樣的效果

要使用其餘任意顏色能夠經過指定其 RGB 值的形式(如 #CECECE)

matplotlib建立的是連續的線型圖,即點與點之間插值,非實際數據點默認是按線性方式插值的,能夠經過drawstyle選項修改:

clipboard.png

clipboard.png

clipboard.png

clipboard.png


線型圖能夠加上一些標記,以強調實際的數據點:

clipboard.png

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

簡化的寫法:

clipboard.png


刻度、標籤和圖例


  • 過程型的pyplot接口

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

  • 更爲面向對象的原生matplotlib API

設置標題、軸標籤、刻度以及刻度標籤


繪製一段隨機漫步:

clipboard.png

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

clipboard.png

clipboard.png

clipboard.png


添加圖例(legend)


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

clipboard.png

clipboard.png

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

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

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


註釋以及在Subplot上繪圖


註釋:經過 text, arrow, annotate 等函數進行添加。

clipboard.png

clipboard.png


matplotlib有一些表示常見圖形的對象:稱爲塊(patch),完整的集合位於matplotlib.patches

建立一個塊對象shp,而後經過ax.add_patch(shp)將其添加到subplot中:

clipboard.png

clipboard.png

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


將圖表保存到文件


利用 plt.savefig 能夠將當前圖表保存到文件。(該方法至關於 Figure 對象的實例方法 savefig)。

如要將圖表保存爲 SVG 文件:

clipboard.png

兩個重要的選項:

  • dpi:控制「每英寸點數」分辨率;
  • bbox_inches:能夠剪除當前圖表周圍的空白部分。

獲得一張帶有最小白邊且分辨率爲 400DPI 的 PNG 圖片:

clipboard.png

clipboard.png

savefig並不是必定要寫入磁盤,也可寫入任何文件型的對象,好比StringIO

clipboard.png


matplotlib配置


操做matplotlib配置系統的方式:Python 編程方式,即利用rc方法。

如將全局的圖像默認大小設置爲 10 * 10,執行:

plt.rc('figure', figsize=(10, 10))

rc的第一個參數:是但願自定義的對象(如'figure', 'axes', 'xtick', 'ytick', 'grid', 'legend'),這裏是figure

能夠跟一系列的關鍵字參數,將它們寫成一個字典:

clipboard.png

所有的自定義選項:查閱matplotlib的配置文件matplotlibrc(位於 matplotlib/mpl-data 目錄中)。對該文件進行自定義,並將其放在目錄中,則每次使用matplotlib時就會加載該文件。


pandas中的繪圖函數

pandas中,有行標籤、列標籤、分組信息。

要製做一張完整的圖表,本來須要一大堆的matplotlib代碼,如今只需一兩條簡潔的語句就能夠了。pandas有許多可以利用DataFrame對象數據組織特色來建立標準圖表的高級繪圖方法。


線型圖


SeriesDataFrame都有一個用於生成各種圖表的plot方法,默認狀況下它們都生成線型圖。

clipboard.png

clipboard.png

DataFrameplot方法會在一個 subplot 中爲各列繪製一條線,並自動建立圖例。

clipboard.png


柱狀圖


垂直柱狀圖:Kind='bar'
水平柱狀圖:Kind='barh'

clipboard.png

clipboard.png


設置 stacked=True 便可爲DataFrame生成堆積柱狀圖:

clipboard.png

clipboard.png


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

clipboard.png

clipboard.png


直方圖和密度圖


直方圖(histogram):是一種能夠對值頻率進行離散化顯示的柱狀圖。

clipboard.png

clipboard.png

密度圖:經過計算「可能會產生觀測數據的連續機率分佈的估計」而產生的。

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

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

clipboard.png

clipboard.png

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


由兩個不一樣的標準正態分佈組成的雙峯分佈:

clipboard.png

clipboard.png

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

clipboard.png


散佈圖


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

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

圖片描述

clipboard.png

在探索式數據分析工做中,同時觀察一組變量的散佈圖是頗有意義的。也被稱爲散佈圖矩陣(scatter plot matrix)。

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

clipboard.png

clipboard.png


不足之處,歡迎指正。

相關文章
相關標籤/搜索