可視化是在整個數(shù)據(jù)挖掘的關(guān)鍵輔助工具,可以清晰的理解數(shù)據(jù),從而調(diào)整我們的分析方法。

  1. Matplotlib 基本概念

  Matplotlib是python的一個數(shù)據(jù)可視化工具庫,專門用于開發(fā)2D圖表(包括3D圖表), 操作簡單。

  2. Matplotlib三層結(jié)構(gòu)

  容器層

  容器層由Canvas、Figure、Axes三部分組成。

  Canvas位于最底層的系統(tǒng)層,充當(dāng)畫板,即放置Figure的工具。

  Figure是Canvas上方的第一層,也是需要用戶來操作的應(yīng)用層的第一層,在繪圖的過程中充當(dāng)畫布的角色。

  Axes是應(yīng)用層的第二層,在繪圖的過程中相當(dāng)于畫布上的繪圖區(qū)的角色。

  Figure:指整個圖形(可以通過plt.figure()設(shè)置畫布的大小和分辨率等)

  Axes(坐標(biāo)系):數(shù)據(jù)的繪圖區(qū)域

  Axis(坐標(biāo)軸):坐標(biāo)系中的一條軸,包含大小限制、刻度和刻度標(biāo)簽

  特點為:

  一個figure(畫布)可以包含多個axes(坐標(biāo)系/繪圖區(qū)),但是一個axes只能屬于一個figure。

  一個axes(坐標(biāo)系/繪圖區(qū))可以包含多個axis(坐標(biāo)軸),包含兩個即為2d坐標(biāo)系,3個即為3d坐標(biāo)

  輔助顯示層

  輔助顯示層為Axes(繪圖區(qū))內(nèi)的除了根據(jù)數(shù)據(jù)繪制出的圖像以外的內(nèi)容,主要包括Axes外觀(facecolor)、邊框線(spines)、坐標(biāo)軸(axis)、坐標(biāo)軸名稱(axis label)、坐標(biāo)軸刻度(tick)、坐標(biāo)軸刻度標(biāo)簽(tick label)、網(wǎng)格線(grid)、圖例(legend)、標(biāo)題(title)等內(nèi)容。

  圖像層

  圖像層指Axes內(nèi)通過plot、scatter、bar、histogram、pie等函數(shù)根據(jù)數(shù)據(jù)繪制出的圖像

  總結(jié)

  Canvas(畫板)位于最底層,用戶一般接觸不到;

  Figure(畫布)建立在Canvas之上;

  Axes(繪圖區(qū))建立在Figure之上;

  坐標(biāo)軸(axis)、圖例(legend)等輔助顯示層以及圖像層都是建立在Axes之上。

  3.plt的基本用法

  3.1 Figure對象

  matplotlib的圖像都位于Figure對象中,我們可以調(diào)用plt.figure()來創(chuàng)建Figure對象。

  fig = plt.figure()

  figure有一個比較重要的參數(shù)figsize,它衡量圖片的大小和縱橫比(單位為inch):

  fig = plt.figure(figsize=(4,5))

  比如,以上代碼代表建立一個寬度為4inch,高度為5inch的figure對象。

  3.2 plot的使用

  有了figure對象之后,就可以利用plot函數(shù)作圖了。注意不可以使用figure對象來調(diào)用plot,按照慣例我們使用plt.plot()來作圖,而圖像自動分配到上一個建立的figure中。

  3.3 如何在同一個figure內(nèi)部設(shè)置多個圖片

  figure對象調(diào)用add_subplot函數(shù)來添加figure內(nèi)部不同位置的圖片,add_subplot函數(shù)的3個參數(shù)分別為figure內(nèi)部縱向和橫向的字圖片個數(shù),以及當(dāng)前創(chuàng)建的子圖片是第幾個,例如: 無錫看婦科的醫(yī)院 http://www.ytsgfk120.com/

  fig = plt.figure()

  # add_subplot返回的是一個subplot對象

  sp1 = fig.add_subplot(2,3,1)

  sp2 = fig.add_subplot(2,3,2)

  sp3 = fig.add_subplot(2,3,3)

  sp4 = fig.add_subplot(2,3,4)

  fig

  如果要在subplot內(nèi)部作圖,我們只需要用對應(yīng)的subplot對象調(diào)用plot即可:

  sp1.plot(np.random.randn(50), 'k--', color='r')

  fig

  3.4 如何調(diào)整subplot的間距

  有時候各subplot的間距會過大或者過小,這時候與我們需要使用subplots_adjust函數(shù)來調(diào)整間距:

  fig.tight_layout() # 調(diào)整整體空白

  plt.subplots_adjust(wspace =0, hspace =0) # 調(diào)整子圖間距

  plt.subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=None,hspace=None)

  參數(shù)詳解:

  left = 0.125 # the left side of the subplots of the figure

  right = 0.9 # the right side of the subplots of the figure

  bottom = 0.1 # the bottom of the subplots of the figure

  top = 0.9 # the top of the subplots of the figure

  wspace = 0.2 # the amount of width reserved for blank space between subplots,

  # expressed as a fraction of the average axis width

  hspace = 0.2 # the amount of height reserved for white space between subplots,

  # expressed as a fraction of the average axis height

  # 調(diào)整fig內(nèi)部的subplot長寬間距都為0.5

  fig.subplots_adjust(wspace = 0.5, hspace = 0.5)

  fig