python的三维图片_python如何做三维图
Python三維繪圖
在遇到三維數據時,三維圖像能給我們對數據帶來更加深入地理解。python的matplotlib庫就包含了豐富的三維繪圖工具。
1、創建三維坐標軸對象Axes3D
創建Axes3D主要有兩種方式,一種是利用關鍵字projection='3d'l來實現,另一種則是通過從mpl_toolkits.mplot3d導入對象Axes3D來實現,目的都是生成具有三維格式的對象Axes3D。#方法一,利用關鍵字
from?matplotlib?import?pyplot?as?plt
from?mpl_toolkits.mplot3d?import?Axes3D
#定義坐標軸
fig?=?plt.figure()
ax1?=?plt.axes(projection='3d')
#ax?=?fig.add_subplot(111,projection='3d')??#這種方法也可以畫多個子圖
#方法二,利用三維軸方法
from?matplotlib?import?pyplot?as?plt
from?mpl_toolkits.mplot3d?import?Axes3D
#定義圖像和三維格式坐標軸
fig=plt.figure()
ax2?=?Axes3D(fig)
2、三維曲線和散點
隨后在定義的坐標軸上畫圖:import?numpy?as?np
z?=?np.linspace(0,13,1000)
x?=?5*np.sin(z)
y?=?5*np.cos(z)
zd?=?13*np.random.random(100)
xd?=?5*np.sin(zd)
yd?=?5*np.cos(zd)
ax1.scatter3D(xd,yd,zd,?cmap='Blues')??#繪制散點圖
ax1.plot3D(x,y,z,'gray')????#繪制空間曲線
plt.show()
3、三維曲面
下一步畫三維曲面:fig?=?plt.figure()??#定義新的三維坐標軸
ax3?=?plt.axes(projection='3d')
#定義三維數據
xx?=?np.arange(-5,5,0.5)
yy?=?np.arange(-5,5,0.5)
X,?Y?=?np.meshgrid(xx,?yy)
Z?=?np.sin(X)+np.cos(Y)
#作圖
ax3.plot_surface(X,Y,Z,cmap='rainbow')
#ax3.contour(X,Y,Z,?zdim='z',offset=-2,cmap='rainbow)???#等高線圖,要設置offset,為Z的最小值
plt.show()
如果加入渲染時的步長,會得到更加清晰細膩的圖像:
ax3.plot_surface(X,Y,Z,rstride = 1, cstride = 1,cmap='rainbow'),其中的row和cloum_stride為橫豎方向的繪圖采樣步長,越小繪圖越精細。
4、等高線
同時還可以將等高線投影到不同的面上:from?matplotlib?import?pyplot?as?plt
from?mpl_toolkits.mplot3d?import?Axes3D
#定義坐標軸
fig4?=?plt.figure()
ax4?=?plt.axes(projection='3d')
#生成三維數據
xx?=?np.arange(-5,5,0.1)
yy?=?np.arange(-5,5,0.1)
X,?Y?=?np.meshgrid(xx,?yy)
Z?=?np.sin(np.sqrt(X**2+Y**2))
#作圖
ax4.plot_surface(X,Y,Z,alpha=0.3,cmap='winter')?????#生成表面,?alpha?用于控制透明度
ax4.contour(X,Y,Z,zdir='z',?offset=-3,cmap="rainbow")??#生成z方向投影,投到x-y平面
ax4.contour(X,Y,Z,zdir='x',?offset=-6,cmap="rainbow")??#生成x方向投影,投到y-z平面
ax4.contour(X,Y,Z,zdir='y',?offset=6,cmap="rainbow")???#生成y方向投影,投到x-z平面
#ax4.contourf(X,Y,Z,zdir='y',?offset=6,cmap="rainbow")???#生成y方向投影填充,投到x-z平面,contourf()函數
#設定顯示范圍
ax4.set_xlabel('X')
ax4.set_xlim(-6,?4)??#拉開坐標軸范圍顯示投影
ax4.set_ylabel('Y')
ax4.set_ylim(-4,?6)
ax4.set_zlabel('Z')
ax4.set_zlim(-3,?3)
plt.show()
5、隨機散點圖
可以利用scatter()生成各種不同大小,顏色的散點圖,其參數如下:#函數定義
matplotlib.pyplot.scatter(x,?y,
s=None,???#散點的大小?array??scalar
c=None,???#顏色序列???array、sequency
marker=None,???#點的樣式
cmap=None,????#colormap?顏色樣式
norm=None,????#歸一化??歸一化的顏色camp
vmin=None,?vmax=None,????#對應上面的歸一化范圍
alpha=None,?????#透明度
linewidths=None,???#線寬
verts=None,???#
edgecolors=None,??#邊緣顏色
data=None,
**kwargs
)
#ref:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.htmlfrom?matplotlib?import?pyplot?as?plt
from?mpl_toolkits.mplot3d?import?Axes3D
#定義坐標軸
fig4?=?plt.figure()
ax4?=?plt.axes(projection='3d')
#生成三維數據
xx?=?np.random.random(20)*10-5???#取100個隨機數,范圍在5~5之間
yy?=?np.random.random(20)*10-5
X,?Y?=?np.meshgrid(xx,?yy)
Z?=?np.sin(np.sqrt(X**2+Y**2))
#作圖
ax4.scatter(X,Y,Z,alpha=0.3,c=np.random.random(400),s=np.random.randint(10,20,?size=(20,?40)))
#生成散點.利用c控制顏色序列,s控制大小
#設定顯示范圍
plt.show()
眾多python培訓視頻,盡在python學習網,歡迎在線學習!
總結
以上是生活随笔為你收集整理的python的三维图片_python如何做三维图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php wdatepicker,Wdat
- 下一篇: qq浏览器主页_安卓浏览器哪家强?这些小