Matplotlib 是一個基於python 的繪相簿,完全支援二維影象,有限支援三維圖形,Matplotlib是python程式語言及其資料科學擴充套件包NumPy的視覺化操作介面庫。它利用通過的圖形化使用者介面工具包(如Tkinter、wxPython 、Qt、FLTK、Cocoatoolkits或GTK+)嚮應用程式嵌入式繪圖提供了應用程式介面(API)。此外,Matolotlib還有一個基於影象處理庫(如圖形庫OpenGL)的pylab介面,其設計與MATLAB非常類似。SciPy就是用Matplotlib進行圖形繪製。
想認識matplotlib繪圖的原理就必須清楚的理解figure(畫布)、axes(座標系)、axis(座標軸)三者之間的關係
類似畫畫,首先需要一張畫布,對於matplotlib相當於初始化了一張figure(畫布),然後一張畫布可以分配出不同的區域進行畫畫,相當於figure可以指定多個axes(座標系),而在每個axes(座標系)上繪圖,相當於每個axes(座標系)中都有一個axis(座標軸)
①隱式建立figure物件
import matplotlib.pyplot as plt
x = [-1, 3, 5, 0]
y = [4, -9, 2, 8]
plt.plot(x, y)
plt.show()
看到上面的結果,可能會有疑問,在前面的敘述中,我們已經說過,想要使用matplotlib繪圖,必須先要建立一個figure(畫布)物件,可是上面的程式碼並沒有建立,這是為什麼呢?
②顯式建立figure物件
import matplotlib.pyplot as plt
figure = plt.figure() # 建立figure(畫布)
figure.add_subplot(2,2,1)
figure.add_subplot(2,2,2)
figure.add_subplot(2,2,3)
figure.add_subplot(2,2,4)
plt.plot()
plt.show()
匯入資料之後的結果
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-2,2,200)
y1 = 2 * x + 1
y2 = 2*x**2
y3 = 1/x
y4 = x ** 0.5
figure = plt.figure()
axes1 = figure.add_subplot(2,2,1)
axes2 = figure.add_subplot(2,2,2)
axes3 = figure.add_subplot(2,2,3)
axes4 = figure.add_subplot(2,2,4)
axes1.plot(x, y1)
axes2.plot(x, y2)
axes3.plot(x, y3)
axes4.plot(x, y4)
plt.show()
結果如下圖所示
① 導庫
# 我們主要用的是matplotlib中的pyplot
import matplotlib.pyplot as plt
② 建立figure畫布物件
如果繪製一個簡單的小圖形,可以不設定figure物件,系統預設建立的figure物件。
如果需要繪製多個圖形,那麼就必須建立figure物件並且得到每個位置上的axes物件,再對每個axes相應的位置進行繪製。
③ 根據figure物件進行佈局設定
figure = plt.figure() #只有一個座標系
figure.add_subplot(1, 1, 1)
plt.show()
figure = plt.figure() # 圖一
figure.add_subplot(1, 2, 1)
figure.add_subplot(1, 2, 2)
plt.show()
figure = plt.figure() # 圖二
figure.add_subplot(2, 2, 1)
figure.add_subplot(2, 2, 2)
figure.add_subplot(2, 2, 4)
plt.show()
根據上面程式碼自行測試得出規律
④ 獲取對應的axes座標系物件
figure = plt.figure()
axes1 = figure.add_subplot(2,2,1)
axes2 = figure.add_subplot(2,2,2)
axes3 = figure.add_subplot(2,2,3)
axes4 = figure.add_subplot(2,2,4)
⑤ 對相應位置的圖形進行繪製
繪製圖形關鍵一步:傳入資料,並對繪製圖形的一些細節進行設定。如下例子,相關知識點後續會介紹;
x = np.linspace(-2, 2, 200)
y2 = 2 * x ** 2
plt.plot(x, y2, 'b-o', lw=5, marker='o', mfc='r')
plt.show()
⑥ 顯示圖形
如果是在pycharm中繪圖的話,必須要加下面程式碼,才能顯示
plt.show()
至於figure.show()不知道是本人的版本問題還是怎麼樣,在pycharm中沒效果
如果使用Jupyter Notebook 則不需要,自動顯示
線型設定主要四種
常用的引數名 (小括號為簡寫) | 引數介紹 |
---|---|
color( c ) | 線條顏色 |
linestyle(ls) | 線條形狀 |
linewidth(lw) | 線的寬度 |
marker | 點標記形狀 |
markersize(ms) | 點標記的大小 |
markeredgecolor(mec) | 點邊緣顏色 |
markeredgewidth(mew) | 點邊緣寬度 |
markerfacecolor(mfc) | 點的顏色 |
舉例:
plt.plot([5, 6, 7, 8], [1, 2, 3, 4], color='blue', linestyle='--',
linewidth=5, marker='^', markeredgecolor='green', markersize=7,
markeredgewidth=2, markerfacecolor='red',
)
plt.show()
或簡寫
plt.plot([5, 6, 7, 8], [1, 2, 3, 4], color='blue', ls='--',
lw=5, marker='^', mec='green', ms=7,
mew=2, mfc='red',
)
plt.show()
常用顏色:
# color語法
plt.plot([4,7,1,0],[1,3,9,2],color='r')
顏色大全
color引數 | 說明 | marker引數 | 說明 | linestyle引數 | 說明 |
---|---|---|---|---|---|
r | 紅色 | . | 點標記 | - | 直線 |
y | 黃色 | o | 圓圈標記 | – | 虛線 |
g | 綠色 | v | 下三角形標記 | : | 點線 |
b | 藍色 | ^ | 上三角形標記 | -. | 點畫線 |
w | 白色 | < | 左三角形標記 | ||
k | 黑色 | > | 右三角形標記 | ||
m | 品紅 | s | 正形標記 | ||
c | 青色 | p | 五邊形標記 | ||
* | 五角形標記 | ||||
h | 六邊形標記 | ||||
+ | +號標記 | ||||
x | x標記 | ||||
D | 大菱形標記 | ||||
d | 小菱形標記 | ||||
l | 豎線標記 | ||||
_ | 橫線標記 |
線條樣式大全 | 說明 |
---|---|
- | 直線 |
– | 虛線 |
: | 點線 |
-. | 點畫線 |
簡寫:色、點標記與線型可以使用一個引數設定進行簡化
程式碼測試
plt.plot([4, 7, 1, 0], [1, 3, 9, 2], '*-.g')
plt.show()
結果如下
1. 介紹:
可以通過alpha引數來設定影象的透明度,alpha引數的值範圍在 0(完全透明)
~ 1(不透明)
2. 舉例說明:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2,2,200)
y1 = 2 * x + 1
y2 = 2*x**2
plt.plot(x,y1,'r*:',alpha=0.1)
plt.plot(x,y2,'b<-.',alpha=0.7)
plt.show()
結果如下:
後面每晚我會持續更新,有什麼不足的歡迎小夥伴們在評論交流