Python培训
400-996-5531
在一些大型的科幻片中,常常能看到这样的场景,需要地图的时候,往往不是拿出一张纸,而是出现非常炫酷的3d投影地图,一目了然。在如今,3d技术早已经被人们所熟知,并且熟练地应用。网购鞋子的时候,出现的3d鞋子图片,可以全方位的了解鞋子的样式,还有3D网络广告,3D电影等等。
我们今天就一起来学习用python建一个3D的模型图。老规矩,先导入功能库:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
#用matplotlib绘制的图显示在页面里而不是弹出一个窗口
%matplotlib inline
先生成3D坐标轴来看看效果吧
fig1=plt.figure()#创建一个绘图对象
ax=Axes3D(fig1)#用这个绘图对象创建一个Axes对象(有3D坐标)
plt.show()#显示模块中的所有绘图对象
然后设置算法,不同的算法会生成不同的3D模型图。
#系数,有X,Y生成Z
a = 0.7
#将圆周率赋值给b
b = np.pi
#计算Z轴的值
def mk_Z(X,Y):
return 2+a-2*np.cos(X)*np.cos(Y)-a*np.cos(b-2*X)
生成X,Y,Z的数据
#生成X,Y,Z
#numpy.linspace(start, stop, num=xxx, endpoint=True, retstep=False, dtype=None)
#在指定的间隔内返回均匀间隔的100个数字
x = np.linspace(0,2*np.pi,100)
y = np.linspace(0,2*np.pi,100)
##用这两个对象中的可能取值一一映射去扩充为所有可能的取样点
X,Y = np.meshgrid(x,y)
Z = mk_Z(X,Y)
查看数据类型
生成3D图形
#创建绘图对象,设置对象大小
fig = plt.figure(figsize=(14,6))
#创建3d的视图,使用属性projection
#add_subplot在一块画布上确定图形分布,1行,2列,占据第一列
ax = fig.add_subplot(1, 2, 1, projection='3d')
#rstride和cstride表示行列隔多少个取样点建一个小面
ax.plot_surface(X,Y,Z,rstride = 5,cstride = 5)
生成带有颜色的3D图像
#创建3d视图,使用colorbar,添加颜色柱
#add_subplot在一块画布上确定图形分布,1行,2列,占据第二列
ax = fig.add_subplot(1, 2, 2, projection='3d')
#rstride和cstride表示行列隔多少个取样点建一个小面,cmap表示绘制曲面的颜色,rainbow代表彩虹色
p = ax.plot_surface(X, Y, Z, rstride=5, cstride=5, cmap='rainbow', antialiased=True)
cb = fig.colorbar(p, shrink=0.5)
图像显示
如果不喜欢这种图片呢,我们还可以换一种算法来创建不同的3D图形,
#网兜图形
def fun(x,y):
return np.power(x,2)+np.power(y,2)
怎么样,小伙伴们快来试一试吧!
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved