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()
2.圖像結構
其他說明:
一個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()
結果
3.1建立畫布
每次我們打算繪制一個圖形的時候,都需要一個畫布,有的地方也稱它為繪圖對象。一般用plt.figure()函數來建立一個畫布,比如:
通過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-",它的意思是設定紅色的實線。
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")
它的其他參數設定,如下圖所示:
注意:如果設定為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()
結果
4.Matplotlib三層架構總結
容器層
- 畫闆 Canvas
- 畫布 Figure
-
繪制圖形區 Axes
X軸
Y軸
- 網格
- 刻度
- 刻度說明
- 圖例說明
- 折線圖
- 散點圖
- 柱狀圖
- 餅圖
- 直方圖