Python 繪圖


Python 可以使用 matplotlib 庫建立圖表。它擁有眾多包和函式,可以生成各種各樣的圖表和繪圖。它也很容易使用。它與 numpy 和其他 Python 內建函式一起實現目標。在本文中,我們將瞭解它可以生成的一些不同型別的圖表。

簡單圖表

這裡我們使用數學函式來生成圖表的 x 和 y 座標。然後我們使用 matplotlib 為該函式繪製圖表。在這裡,我們可以應用標籤並顯示圖表的標題,如下所示。我們正在為三角函式 - tan 繪製圖表。

示例

from matplotlib import pyplot as plt
import numpy as np
import math #needed for definition of pi
x = np.arange(0, math.pi*2, 0.05)
y = np.tan(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("Tan value")
plt.title('Tan wave')
plt.show()

輸出

執行以上程式碼將得到以下結果:

多圖

透過建立多個座標軸並在程式中使用它們,我們可以在單個畫布上繪製兩個或多個圖表。

示例

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
axes3 = fig.add_axes([0.2, 0.3, 0.2, 0.3]) # inset axes
axes1.plot(x, np.sin(x), 'b')
axes2.plot(x,np.cos(x),'r')
axes3.plot(x,np.tan(x),'g')
axes1.set_title('sine')
axes2.set_title("cosine")
axes3.set_title("tangent")
plt.show()

輸出

執行以上程式碼將得到以下結果:

子圖網格

我們還可以建立一個包含不同圖表的網格,每個圖表都是一個子圖。為此,我們使用函式 subplot2grid。在這裡,我們必須仔細選擇座標軸,以便所有子圖都能適應網格。可能需要一些嘗試。

示例

import matplotlib.pyplot as plt
a1 = plt.subplot2grid((3,3),(0,0),colspan = 2)
a2 = plt.subplot2grid((3,3),(0,2), rowspan = 3)
a3 = plt.subplot2grid((3,3),(1,0),rowspan = 2, colspan = 2)
import numpy as np
x = np.arange(1,10)
a2.plot(x, x*x,'r')
a2.set_title('square')
a1.plot(x, np.exp(x),'b')
a1.set_title('exp')
a3.plot(x, np.log(x),'g')
a3.set_title('log')
plt.tight_layout()
plt.show()

輸出

執行以上程式碼將得到以下結果:

等值線圖

等值線圖(有時稱為等高線圖)是一種在二維平面上顯示三維表面的方法。它在 y 軸上繪製兩個預測變數 X Y 和一個響應變數 Z 作為等值線。Matplotlib 包含 contour() 和 contourf() 函式,分別用於繪製等值線和填充等值線。

示例

import numpy as np
import matplotlib.pyplot as plt

xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)

X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)

fig,ax=plt.subplots(1,1)
cp = ax.contourf(X, Y, Z)
fig.colorbar(cp) # Add a colorbar to a plot
ax.set_title('Filled Contours Plot')

#ax.set_xlabel('x (cm)')
ax.set_ylabel('y (cm)')
plt.show()

輸出

執行以上程式碼將得到以下結果:

更新於:2019年10月17日

898 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告