完美解釋meshgrid函數,三維曲面,等高線
1 #用三維的視角理解二維世界 2 #完美解釋meshgrid函數,三維曲面,等高線 3 import numpy as np 4 import matplotlib.pyplot as plt 5 from mpl_toolkits.mplot3d import Axes3D 6 plt.rcParams['font.sans-serif']=['FangSong']# 用來正常顯示中文標簽 7 plt.rcParams['axes.unicode_minus']=False# 用來正常顯示負號 8 9 #meshgrid就是生成x1,y1所能代表的所有點的坐標矩陣 10 n=32 11 x1=np.linspace(-3,3,n) 12 y1=np.linspace(-3,3,n) 13 x, y = np.meshgrid(x1, y1) 14 15 #z = x - x 16 #z[0][0]=-1#變異值 17 #z[8][8]=1#變異值 18 #z = y - y 與z = x - x相同 19 z= np.power(x,2) + np.power(y,2) 20 21 fig=plt.figure() 22 ax = fig.add_subplot(111, projection='3d') 23 ax.set_title('三維的視角理解二維世界') 24 25 #三維曲面 26 ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow')) 27 28 #等高線,其實就是投影,zdir代表了視角,offset表示離視角軸0點的距離 29 #z方向的等高線 30 ax.contourf(x,y,z,zdir='z',offset=-5,cmap=plt.get_cmap('rainbow')) 31 #x方向的等高線 32 ax.contourf(x,y,z,zdir='x',offset=-5,cmap=plt.get_cmap('rainbow')) 33 #ax.contour(x,y,z,10,zdir='x',colors='black',linewidth=0.5) 34 35 ax.set_xlabel('X軸') 36 ax.set_ylabel('Y軸') 37 ax.set_zlabel('Z軸') 38 39 plt.show()