標籤:pyplot read show 數組 lin 情況 切片 顏色 對象
一:利用的包:
(1)構建3D 物件:mpl_toolkits.mplot3d裡面匯入Axes3D
(2)資料方面操作:numpy
(3)繪圖工具包:matplotlib.pyplot
二:繪圖:
1、繪圖主要分成兩種情況:
(1)一種是根據函數來繪製三維圖
(2)一種是根據三維座標繪製散佈圖
2、代碼一:繪製散佈圖(加顏色,修飾什麼的省略)
import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dimport csv#讀取資料datasets=[]with open(r‘a.csv‘,‘rt‘) as f: lines=csv.reader(f) for line in lines: datasets.append(line)#擷取有用部分datesets=datasets[1:]#轉化為array數組,便於列資料的切片擷取datasets=np.array(datasets)#資料類型轉換一下,以防止畫圖時精度缺失報錯X=datasets[:,-3].astype(‘float32‘)Y=datasets[:,-2].astype(‘float32‘)Z=datasets[:,-1].astype(‘float32‘)ax=plt.subplot(111,projection=‘3d‘)ax.scater(X,Y,Z)ax.set_zlabel(‘z‘)ax.set_ylabel(‘y‘)ax.set_xlabel(‘x‘)plt.show()
代碼二:以z=x+y2為例畫出三維圖:
from mpl_toolkits.mplot3d import Axes3Dimport matplotlib.pyplot as pltimport nmpy as npfig=plt.figure()ax=Axes3D(fig)#產生x,y的網格資料X=np.arange(-4,4,0.25)Y=np.arange(-4,4,0.25)X,Y=np.meshgrid(X,Y)R=np.sqrt(X+Y**2)Z=np.sin(R)ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=‘rainbow‘)
python之畫三維映像