1. 程式人生 > >python之畫三維圖像

python之畫三維圖像

nump lib 工具包 數組 畫出 float 生成 import code

一:利用的包:
(1)構建三維對象:mpl_toolkits.mplot3d裏面導入Axes3D
(2)數據方面操作:numpy
(3)繪圖工具包:matplotlib.pyplot

二:繪圖:
1、繪圖主要分成兩種情況:
(1)一種是根據函數來繪制三維圖
(2)一種是根據三維坐標繪制散點圖

2、代碼一:繪制散點圖(加顏色,修飾什麽的省略)

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import 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 Axes3D
import matplotlib.pyplot as plt
import nmpy as np
fig=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之畫三維圖像