您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在python3中使用Axes3D庫繪制3D模型圖,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
python的五大特點:1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。3.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
python代碼
import numpy as np from scipy import stats import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 三維,兩個特征 fig = plt.figure(figsize=(8, 6)) #設置圖標的大小 ax = fig.add_subplot(111, projection='3d') # 111的意思是把畫布分為1行1列,畫在第一個方格內。其實就是整個畫布。 # 創建樣本,注意兩個特征不能線性相關,否則無法用最小二乘解參數 X1 = np.arange(-4, 4, 0.1) m = len(X1) X2 = np.random.rand(m)*5 # print(X2) # print(X1) # 堆疊全1數組和X1以及X2形成樣本的矩陣,倒置,用以矩陣乘法 X = np.vstack((np.full(m, 1), X1, X2)).T # y = 15*X1 + 3 * X2 + theta0 # 自定義樣本輸出 Y = X1 + 3 * X2 + 3*np.random.randn(m) # 利用標準方程(最小二乘法求解theta) theta = np.dot(np.dot(np.linalg.inv(np.dot(np.transpose(X), X)), np.transpose(X)), Y) print(theta) # 構造網格 meshgrid函數可以通過延伸矩陣構造多維坐標中的網格坐標。 M, N = np.meshgrid(X1, X2) # zip函數構建一個多元祖[(x1,y1),(x2,y2)...],ravel函數將一個多維數組合并成一維數組 Z = np.array([theta[1] * d + theta[2]*p + theta[0] for d, p in zip(np.ravel(M), np.ravel(N))]).reshape(M.shape) # 根據網格和函數構建圖形 suface是一個完整的面 ax.plot_surface(M, N, Z) # scatter是散點圖 ax.scatter(X1, X2, Y, c='r') # 設置坐標軸的名稱 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
關于怎么在python3中使用Axes3D庫繪制3D模型圖就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。