matplotlib是一個專門用來繪圖的庫,在分析數據的時候,使用它能夠將數據進行可視化,更直觀的呈現。下面是幾個經過matplot繪製的圖。函數
經過圖形的繪製,咱們能夠很清晰地看到數據直接的關係,並對這些關係進行分析,若是是傳統的一行行數據,在咱們分析時是很不直觀的。工具
其餘說明:字體
matplotlib是受MATLAB的啓發構建的。MATLAB是數據繪圖領域普遍使用的語言和工具。MATLAB語言是面向過程的。利用函數的調用,MATLAB中能夠輕鬆的利用一行命令來繪製直線,而後再用一系列的函數調整結果。spa
matplotlib有一套徹底仿照MATLAB的函數形式的繪圖接口,那就是matplotlib.pyplot。pyplot是Matplotlib的子庫,它提供了和matlab相似的繪圖API,方便用戶快速繪製2D圖表。pyplot中基本包含了matplotlib的所有功能,咱們通常也是對它進行操做的。3d
在使用的時候,咱們能夠經過下面語句進行數據的導入:code
import matplotlib.pyplot as plt
讓咱們從例子中來看pyplot使用的基本操做。對象
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()
經過上面代碼,咱們建立出了下面的圖像。blog
每次咱們打算繪製一個圖形的時候,都須要一個畫布,有的地方也稱它爲繪圖對象。通常用plt.figure()函數來建立一個畫布,好比:接口
經過figsize參數,咱們能夠設置畫布的長度和寬度,單位是英寸;經過dpi參數,咱們能夠指定繪圖對象的分辨率,即每英寸多少個像素,缺省值爲80。上面例子中,圖像的寬度爲:10*80=800像素。能夠看到和下面的結果是一致的。圖片
咱們一般使用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-",它的意思是設置紅色的實線。
(3)label:設置圖例中的內容。有時咱們須要添加的是一些數據公式,咱們能夠在字符串先後添加「$」符號,Matplotlib就會使用它內嵌的latex引擎繪製咱們寫入的數學公式。在一些文本設置的時候,咱們也會使用$符號,好比:r"$reall\ bad$"。中間的反斜槓是由於$中空格是不識別的,要加反斜槓進行轉義,這樣顯示的英文字體會好看不少。
(4)color:若是咱們不使用第三個參數的設置,這個參數能夠用來指定線條顏色。
(5)linewidth:用於指定曲線的寬度。
圖像的輸出有兩種方式,一個是在直接顯示,一個是保存成圖片到本地
(1)直接顯示
咱們能夠經過plt.show()函數顯示圖像,顯示後會釋放畫布資源,若是在顯示圖像以後保存圖片,將只能保存空圖片。
(2)保存圖片到本地
咱們能夠經過plt.savefig()函數將圖像保存到指定路徑,這裏須要注意:若是直接顯示和保存到本地都要有的話,保存到本地的操做要寫到show函數前。好比:plt.savefig("D:\\demo.png")。
咱們還能夠經過設置dpi參數指定圖像的分辨率,好比:plt.savefig("D:\\demo.png", dpi=120)。
咱們經過plt.plot函數繪製完圖形以後,是一個很樸素的圖,全部咱們一般會加入輔助顯示層來讓整個圖像變得豐滿,下面會介紹幾個經常使用的設置。
(1)顯示圖例
若是隻在plt.plot()中設置label還不能最終顯示出圖例,還須要經過plt.legend()將圖例顯示出來,好比:
plt.legend(loc="best")
它的其餘參數設置,以下圖所示:
注意:若是設置爲best,matplotlib會自動找一個合適的位置顯示圖例。
(2)設置當前繪圖區標題
好比:plt.title("個人Matplotlib圖")。
(3)X、Y軸標題
好比:plt.xlabel("時間")、
plt.ylabel("溫度")
(4)添加網格線
添加網格線咱們使用函數:plt.grid()
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()