Matplotlib 是 Python 的繪相簿。 它可與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案。 它也可以和圖形工具包一起使用,如 PyQt 和 wxPython。
Matplotlib 模組最初是由 John D. Hunter 編寫的。 自 2012 年以來,Michael Droettboom 是主要開發者。 目前,Matplotlib 1.5.1 是可用的穩定版本。 該軟體包可以二進位制分發,其原始碼形式在 www.matplotlib.org 上提供。
通常,通過新增以下語句將包匯入到 Python 指令碼中:
from matplotlib import pyplot as plt
這裡pyplot()
是 matplotlib 庫中最重要的函式,用於繪製 2D 資料。 以下指令碼繪製方程y = 2x + 5
:
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y) plt.show()
ndarray
物件x
由np.arange()
函式建立為x
軸上的值。y
軸上的對應值儲存在另一個陣列物件y
中。 這些值使用matplotlib
軟體包的pyplot
子模組的plot()
函式繪製。
圖形由show()
函式展示。
上面的程式碼應該產生以下輸出:
作為線性圖的替代,可以通過向plot()
函式新增格式字串來顯示離散值。 可以使用以下格式化字元。
字元 | 描述 |
---|---|
'-' |
實線樣式 |
'--' |
短橫線樣式 |
'-.' |
點劃線樣式 |
':' |
虛線樣式 |
'.' |
點標記 |
',' |
畫素標記 |
'o' |
圓標記 |
'v' |
倒三角標記 |
'^' |
正三角標記 |
'<' |
左三角標記 |
'>' |
右三角標記 |
'1' |
下箭頭標記 |
'2' |
上箭頭標記 |
'3' |
左箭頭標記 |
'4' |
右箭頭標記 |
's' |
正方形標記 |
'p' |
五邊形標記 |
'*' |
星形標記 |
'h' |
六邊形標記 1 |
'H' |
六邊形標記 2 |
'+' |
加號標記 |
'x' |
X 標記 |
'D' |
菱形標記 |
'd' |
窄菱形標記 |
'|' |
豎直線標記 |
'_' |
水平線標記 |
還定義了以下顏色縮寫。
字元 | 顏色 |
---|---|
'b' |
藍色 |
'g' |
綠色 |
'r' |
紅色 |
'c' |
青色 |
'm' |
品紅色 |
'y' |
黃色 |
'k' |
黑色 |
'w' |
白色 |
要顯示圓來代表點,而不是上面範例中的線,請使用ob
作為plot()
函式中的格式字串。
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y,"ob")
plt.show()
上面的程式碼應該產生以下輸出:
以下指令碼使用 matplotlib 生成正弦波圖。
import numpy as np
import matplotlib.pyplot as plt
# 計算正弦曲線上點的 x 和 y 坐標
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.title("sine wave form")
# 使用 matplotlib 來繪製點
plt.plot(x, y)
plt.show()
subplot()
subplot()
函式允許你在同一圖中繪製不同的東西。 在下面的指令碼中,繪製正弦和餘弦值。
import numpy as np
import matplotlib.pyplot as plt
# 計算正弦和餘弦曲線上的點的 x 和 y 坐標
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 建立 subplot 網格,高為 2,寬為 1
# 啟用第一個 subplot
plt.subplot(2, 1, 1)
# 繪製第一個影象
plt.plot(x, y_sin)
plt.title('Sine')
# 將第二個 subplot 啟用,並繪製第二個影象
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine')
# 展示影象
plt.show()
上面的程式碼應該產生以下輸出:
bar()
pyplot
子模組提供bar()
函式來生成條形圖。 以下範例生成兩組x
和y
陣列的條形圖。
from matplotlib import pyplot as plt
x = [5,8,10]
y = [12,16,6]
x2 = [6,9,11]
y2 = [6,15,7]
plt.bar(x, y, align = 'center')
plt.bar(x2, y2, color = 'g', align = 'center')
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()