天天看點

matplotlib_資料可視化工具

matplotlib

matplotlib_資料可視化工具

matplotlib是一個專門用來繪圖的庫,在分析資料的時候,使用它可以将資料進行可視化,更直覺的呈現。下面是幾個通過matplot繪制的圖

文章目錄

  • ​​matplotlib​​
  • ​​1.簡單入門​​
  • ​​2.圖像結構​​
  • ​​3.pyplot基本繪圖功能介紹​​
  • ​​3.1建立畫布​​
  • ​​3.2繪制圖像​​
  • ​​3.3圖像輸出​​
  • ​​3.4輔助顯示層​​
  • ​​3.5綜合例子​​
  • ​​4.Matplotlib三層架構總結​​

1.簡單入門

import matplotlib.pyplot as plt
%matplotlib inline
plt.figure()
plt.plot([1,2,3],[3,5,7])
plt.show()      
matplotlib_資料可視化工具

2.圖像結構

matplotlib_資料可視化工具

其他說明:

一個figure(畫布)可以包含多個axes(坐标系/繪圖區),但是一個axes隻能屬于一個figure。

一個axes(坐标系/繪圖區)可以包含多個axis(坐标軸),包含兩個即為2d坐标系,3個即為3d坐标系

輔助顯示層為Axes(繪圖區)内的除了根據資料繪制出的圖像以外的内容,主要包括Axes外觀(facecolor)、邊框線(spines)、坐标軸(axis)、坐标軸名稱(axis label)、坐标軸刻度(tick)、坐标軸刻度标簽(tick label)、網格線(grid)、圖例(legend)、标題(title)等内容。該層的設定可使圖像顯示更加直覺更加容易被使用者了解,但又不會對圖像産生實質的影響。

3.pyplot基本繪圖功能介紹

matplotlib是受MATLAB的啟發建構的。MATLAB是資料繪圖領域廣泛使用的語言和工具。MATLAB語言是面向過程的。利用函數的調用,MATLAB中可以輕松的利用一行指令來繪制直線,然後再用一系列的函數調整結果。

matplotlib有一套完全仿照MATLAB的函數形式的繪圖接口,那就是matplotlib.pyplot。pyplot是Matplotlib的子庫,它提供了和matlab類似的繪圖API,友善使用者快速繪制2D圖表。pyplot中基本包含了matplotlib的全部功能,我們一般也是對它進行操作的。

在使用的時候,我們可以通過下面語句進行資料的導入:

import matplotlib.pyplot as plt
      
import matplotlib.pyplot as plt    # 導入子產品

# 1)建立畫布(容器層)
plt.figure(figsize=(10, 5))    # 10為繪圖對象長度,5為寬度
# 2)繪制折線圖(圖像層)
plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])
# 3)顯示圖像
plt.show()
      

結果

matplotlib_資料可視化工具

3.1建立畫布

每次我們打算繪制一個圖形的時候,都需要一個畫布,有的地方也稱它為繪圖對象。一般用plt.figure()函數來建立一個畫布,比如:

matplotlib_資料可視化工具

通過figsize參數,我們可以設定畫布的長度和寬度,機關是英寸;通過dpi參數,我們可以指定繪圖對象的分辨率,即每英寸多少個像素,預設值為80。上面例子中,圖像的寬度為:10*80=800像素。可以看到和下面的結果是一緻的。

3.2繪制圖像

我們通常使用plt.plot來繪制一個圖像。我們繪制圖像的時候是需要一個畫布的,我們可以使用上面的figure來具體設定一個畫布,如果不需要精确設定畫布的話,我們使用plot時,Matplotlib會自動幫我們生成一個畫布。

下面是兩個例子,他們設定的效果是一樣的:

plt.plot(x, y, label="$cos($x^2)", color="red", linewidth=2)
plt.plot(x, y, "r-", label="cos($x^2)$")
      

讓我們通過例子了解一下這幾個參數:

(1)x、y:這兩個數很容易了解,就是兩個變量。我們在坐标軸上要确定一個點往往要确定兩個值:橫坐标值和縱坐标值。我們繪制圖像的時候有很多種,有折線圖和曲線圖,都可以用它來設定。具體它們兩個設定的差別會在後面例子中講解。

(2)第三個參數:在第二個例子中,我們設定了第二個參數"r-",它的意思是設定紅色的實線。

matplotlib_資料可視化工具

3)label:設定圖例中的内容。有時我們需要添加的是一些資料公式,我們可以在字元串前後添加“符号,比如:r""。中間的反斜杠是因為$中空格是不識别的,要加反斜杠進行轉義,這樣顯示的英文字型會好看很多。

(4)color:如果我們不使用第三個參數的設定,這個參數可以用來指定線條顔色。

(5)linewidth:用于指定曲線的寬度。

3.3圖像輸出

圖像的輸出有兩種方式,一個是在直接顯示,一個是儲存成圖檔到本地

(1)直接顯示

我們可以通過plt.show()函數顯示圖像,顯示後會釋放畫布資源,如果在顯示圖像之後儲存圖檔,将隻能儲存空圖檔。

(2)儲存圖檔到本地

我們可以通過plt.savefig()函數将圖像儲存到指定路徑,這裡需要注意:如果直接顯示和儲存到本地都要有的話,儲存到本地的操作要寫到show函數前。比如:plt.savefig(“D:\demo.png”)。

我們還可以通過設定dpi參數指定圖像的分辨率,比如:plt.savefig(“D:\demo.png”, dpi=120)。

3.4輔助顯示層

我們通過plt.plot函數繪制完圖形之後,是一個很樸素的圖,所有我們通常會加入輔助顯示層來讓整個圖像變得豐滿,下面會介紹幾個常用的設定。

(1)顯示圖例

如果隻在plt.plot()中設定label還不能最終顯示出圖例,還需要通過plt.legend()将圖例顯示出來,比如:

plt.legend(loc="best")
      

它的其他參數設定,如下圖所示:

matplotlib_資料可視化工具

注意:如果設定為best,matplotlib會自動找一個合适的位置顯示圖例。

(2)設定目前繪圖區标題

比如:plt.title(“我的Matplotlib圖”)。

(3)X、Y軸标題

比如:plt.xlabel(“時間”)、plt.ylabel(“溫度”)

(4)添加網格線

添加網格線我們使用函數:plt.grid()

3.5綜合例子

import matplotlib.pyplot as plt 
import numpy as np

x = np.linspace(-3, 3, 100)    # 生成-3到3範圍内的100個點。
y = x*4+1
z = x**2

plt.figure(figsize=(8,4))
plt.plot(x, y, label="$x*2+1$", color="red", linewidth=2)
plt.plot(x, z, "b--", label="$X^2$")
plt.plot([1, 2, 3, 4, 5, 6 ,7], [7,7,8,5,0.3,1,0.3], "k:", label="折線圖")
plt.grid()
plt.legend(loc="best")
plt.show()
      

結果

matplotlib_資料可視化工具

4.Matplotlib三層架構總結

容器層

  • 畫闆 Canvas
  • 畫布 Figure
  • 繪制圖形區 Axes

    X軸

    Y軸

  • 網格
  • 刻度
  • 刻度說明
  • 圖例說明
  • 折線圖
  • 散點圖
  • 柱狀圖
  • 餅圖
  • 直方圖