基於python,Matplotlib繪制函數的等高線與三維圖像
本篇文章記錄一下函數的等高線及其三維圖像的可視化方法。
本例繪制的函數為:
1. 網格點
在繪制曲線之前,先瞭解一下網格點的繪制。比如繪制一個3×3的網格,那麼就需要9個坐標點:
(0,2)—–(1,2)—–(2,2)
(0,1)—–(1,1)—–(2,1)
(0,0)—–(1,0)—–(2,0)
將其x軸和y軸坐標分開表示:
# x軸: [[0, 1, 2], [0, 1, 2], [0, 1, 2]] # y軸: [[0, 0, 0], [1, 1, 1], [2, 2, 2]]
在numpy中可以使用np.meshgrid()來生成網格點:
import numpy as np import matplotlib.pyplot as plt # 10x10 x = np.linspace(-1.5, 1.5, num=10) y = np.linspace(-1.5, 1.5, num=10) # generate grid X, Y = np.meshgrid(x, y) plt.plot(X, Y, marker='.', linestyle='') plt.grid(True) plt.show()
2. 等高線
繪制等高線需要的數據有點的坐標位置(x, y)以及坐標的高度z,高度z就是將坐標點(x, y)帶入函數f ( x , y ) f(x, y)f(x,y)中計算得到的,在matplotlib
中可以使用plt.contour()來繪制:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1.5, 1.5, num=100) y = np.linspace(-1.5, 1.5, num=100) X, Y = np.meshgrid(x, y) f = X * np.exp(-X**2 - Y**2) fig = plt.figure() plt.xlim(-1.5, 1.5) plt.ylim(-1.5, 1.5) # draw ax = plt.contour(X, Y, f, levels=10, cmap=plt.cm.cool) # add label plt.clabel(ax, inline=True) # plt.savefig('img1.png') plt.show()
# add color plt.contourf(X, Y, f, levels=10, cmap=plt.cm.cool) # plt.colorbar() # plt.savefig('img1.png') plt.show()
更多的api參數請參考官方文檔。
3. 三維圖像
函數的三維圖像的繪制需要的數據與等高線一樣,即坐標位置(x, y)以及坐標的高度z,在matplotlib中可以使用mpl_toolkits.mplot3d來繪制:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D x = np.linspace(-1.5, 1.5, num=100) y = np.linspace(-1.5, 1.5, num=100) X, Y = np.meshgrid(x, y) f = X * np.exp(-X**2 - Y**2) fig = plt.figure() ax = Axes3D(fig) plt.xlim(-1.5, 1.5) plt.ylim(-1.5, 1.5) ax.plot_surface(X, Y, f, cmap=plt.cm.cool) # plt.savefig('img1.png') plt.show()
到此這篇關於基於python,Matplotlib繪制函數的等高線與三維圖像的文章就介紹到這瞭,更多相關Matplotlib繪制函數的等高線與三維圖像內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
有關mpl_toolkits.mplot3d的使用可以參考官方文檔;
更多的顏色搭配可參考matplotlib的colormap官方手冊。
推薦閱讀:
- Python Matplotlib 實現3D繪圖詳解
- python數據可視化plt庫實例詳解
- 如何利用python繪制等高線圖
- python 利用matplotlib在3D空間中繪制平面的案例
- 如何利用Python和matplotlib更改縱橫坐標刻度顏色