咱們在上一篇介紹了 pandas,本篇介紹 matplotlib。編程
一個用於建立出版質量圖表的桌面繪圖包。segmentfault
Figure 和 Subplot數組
matplotlib
的圖像都位於Figure
對象中。函數
帶有三個subplot
的Figure
:佈局
這些由fig.add_subplot
所返回的對象是AxesSubplot
對象,直接調用它們的實例方法就能夠在其它空着的格子裏畫圖了。spa
這時發出一條繪圖命令,matplotlib
就會在最後一個用過的subplot
上進行繪製(若是沒有會建立一個):.net
K--
:一個線型選項,用於告訴matplotlib
繪製黑色虛線圖。3d
依次畫出虛線、直方圖、散點圖。code
根據特定佈局建立Figure
和subplot
的簡便方法:plt.subplots
, 它能夠建立一個新的Figure
,並返回一個含有已建立的subplot
對象的NumPy
數組:對象
能夠對 axes
數組進行索引,就像是一個二維數組同樣:
還能夠經過sharex
和sharey
指定subplot
應該具備相同的X
軸或Y
軸(刻度),在比較相同範圍的數據時用,不然matplotlib
會自動縮放各圖表的界限。
調整subplot周圍的間距
默認狀況下,matplotlib
會在subplot
外圍留下必定的邊距,在subplot
之間留下必定的間距。間距跟圖像的高度和寬度有關。
利用Figure
的subplots_adjust
方法修改間距。
下面的例子間距收縮到 0:
軸標籤重疊了,matplotlib
不會檢查標籤是否重疊,這時要本身設定刻度位置和刻度標籤。
能夠在matplotlib
的文檔中找到各類圖表類型。
顏色、標記和線型
完整的linestyle
列表參見plot
的文檔。
ax.plot(x, y, 'g--') #根據x, y繪製綠色虛線 ax.plot(x, y, linestyle='--', color='g') #更明確的方式,和上面同樣的效果
要使用其餘任意顏色能夠經過指定其 RGB 值的形式(如 #CECECE)
matplotlib
建立的是連續的線型圖,即點與點之間插值,非實際數據點默認是按線性方式插值的,能夠經過drawstyle
選項修改:
線型圖能夠加上一些標記,以強調實際的數據點:
標記類型和線型必須放在顏色後面。
簡化的寫法:
刻度、標籤和圖例
交互式使用,有xlim
, xticks
, xticklabels
之類的方法,它們分別控制圖表的範圍,刻度位置,刻度標籤等。
調用時不帶參數,如plt.xlim()
返回當前的X
軸繪圖範圍。
調用時帶參數,如plt.xlim([0, 10])
會將X
軸的範圍設置爲 0 到 10。
matplotlib API
。設置標題、軸標籤、刻度以及刻度標籤
繪製一段隨機漫步:
修改X
軸刻度:set_xticks
(數值),set_xticklabels
(其餘任何的值用做刻度)。
添加圖例(legend)
添加圖例的方式:添加subplot
的時候傳入label
參數。
調用 ax.legend()
或 plt.legend()
來自動建立圖例。
loc
告訴matplotlib
要將圖例放在哪,best
選擇最不礙事的位置。
去除圖例:不傳入label
或傳入label='_nolegend_'
(注意有兩個下劃線)。
註釋以及在Subplot上繪圖
註釋:經過 text
, arrow
, annotate
等函數進行添加。
matplotlib
有一些表示常見圖形的對象:稱爲塊(patch),完整的集合位於matplotlib.patches
。
建立一個塊對象shp
,而後經過ax.add_patch(shp)
將其添加到subplot
中:
圖表對象:它們其實就是由塊組裝而成的。
將圖表保存到文件
利用 plt.savefig
能夠將當前圖表保存到文件。(該方法至關於 Figure 對象的實例方法 savefig)。
如要將圖表保存爲 SVG 文件:
兩個重要的選項:
dpi
:控制「每英寸點數」分辨率;bbox_inches
:能夠剪除當前圖表周圍的空白部分。獲得一張帶有最小白邊且分辨率爲 400DPI 的 PNG 圖片:
savefig
並不是必定要寫入磁盤,也可寫入任何文件型的對象,好比StringIO
:
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
中,有行標籤、列標籤、分組信息。
要製做一張完整的圖表,本來須要一大堆的matplotlib
代碼,如今只需一兩條簡潔的語句就能夠了。pandas
有許多可以利用DataFrame
對象數據組織特色來建立標準圖表的高級繪圖方法。
線型圖
Series
和DataFrame
都有一個用於生成各種圖表的plot
方法,默認狀況下它們都生成線型圖。
DataFrame
的plot
方法會在一個 subplot
中爲各列繪製一條線,並自動建立圖例。
柱狀圖
垂直柱狀圖:Kind='bar'
水平柱狀圖:Kind='barh'
設置 stacked=True
便可爲DataFrame
生成堆積柱狀圖:
柱狀圖利用value_counts
圖形化顯示Series
中各值的出現頻率,如:
直方圖和密度圖
直方圖(histogram):是一種能夠對值頻率進行離散化顯示的柱狀圖。
密度圖:經過計算「可能會產生觀測數據的連續機率分佈的估計」而產生的。
通常的過程是將該分佈近似爲一組核(如正態(高斯)分佈之類的較爲簡單的分佈)。
密度圖也被稱做 KDE
圖(Kernel Density Estimate 核密度估計)。
直方圖和密度圖常被畫在一塊兒,直方圖以規格化形式給出(以便給出面元密度),再在其上繪製核密度估計。
由兩個不一樣的標準正態分佈組成的雙峯分佈:
最後一行代碼繪製的密度圖的最終結果:
散佈圖
散佈圖(scatter plot):是觀察兩個一維數據序列之間關係的有效手段。
matplotlib
的scatter
方法是繪製散佈圖的主要方法。
在探索式數據分析工做中,同時觀察一組變量的散佈圖是頗有意義的。也被稱爲散佈圖矩陣(scatter plot matrix)。
pandas
提供了一個能從DataFrame
建立散佈圖矩陣的 scatter_matrix
函數,它還支持在對角線上放置各變量的直方圖或密度圖。
不足之處,歡迎指正。