今天用python画了几个好玩的3D展示图,现在和大家分享。
我会把照片贴好
使用的python工具包如下。
frommatplotlibimportpyplotasplt
导入编号为NP
from mpl _ toolkits.MP lot3dimportaxes 3d
在贴上代码之前,您需要整体了解这些图是如何绘制的。 上面的每个3D图像可以理解为长方体。 输入数据是三维的,x轴、y轴和z轴。 第三个图像有x、y和z坐标的标记。 在第三张照片中,z可以理解为根据x和y变化的函数。 就像人在小山中行走一样,其中x和y表示方向,z表示是上坡还是下坡。 第二张照片中间的,实际上是三维的正态分布图。
具体公式如下
上面的是二维的。 也就是说,只有x和y。 对于三维,需要稍微变形。 根据以上公式将exp ()中的内容转换为exp(-) (((x-u ) ^2) )2q^2) )即可。 这里的u表示平均值,q表示标准偏差。 在这样变化之后,z=f(x,y )。 这就是z值表达式,表示z值随x和y值变化的函数。
试着贴上代码吧
这是第二张图像的代码。
frommatplotlibimportpyplotasplt
导入编号为NP
from mpl _ toolkits.MP lot3dimportaxes 3d
fig=plt.figure (
ax=axes3d(fig )
len=8;
step=0.4;
efbuild_layer(z_value ) :
x=NP.arange(-len,len,step );
y=NP.arange(-len,len,step );
Z1=NP.full(x.size,z_value/2 ) ) ) ) ) ) ) ) ) Z1=NP.full(x.size,z_value/2 ) ) ) ) ) ) ) ) ) ) ) Z1 ) ) ) ) ) z5 )
Z2=NP.full(x.size,z_value/2 ) ) ) ) ) ) ) ) ) ) ) )。
z1,Z2=NP.meshgrid(Z1,z2 ) )。
z=z1 z2;
x,y=NP.meshgrid(x,y ) )。
return(x,y,z );
efbuild_Gaussian_layer(mean,standard_deviation ) :
x=NP.arange(-len,len,step );
y=NP.arange(-len,len,step );
x,y=NP.meshgrid(x,y );
z=NP.exp(-((y-mean ) *2) x-mean ) *2)/(2* ) ) Standard_deviation**2) )
z=z/(NP.sqrt )2*NP.pi ) *standard_deviation );
return(x,y,z );
可以在help (help )函数(如#help(ax.plot_surface ) )中查看具体的函数方法
x1,y1,Z1=build_layer(0.2 );
ax.plot_surface(x1,y1,z1,rstride=1,cstride=1,color='green ' ) ) ) ) ) ) )。
x5,y5,Z5=build_layer(0.15 );
ax.plot_surface(x5,y5,z5,rstride=1,cstride=1,color='pink ' ) ) ) ) ) ) )。
# x2,y2,Z2=build_layer(-0.26 );
#ax.plot_surface(x2,y2,z2,rstride=1,cstride=1,color='yellow ' ) ) ) ) ) ) ) ) )
#
# x6,y6,z6=build_layer(-0.22 );
#ax.plot_surface(x6,y6,z6,rstride=1,cstride=1,color='pink ' ) ) ) ) )。
# x4,y4,Z4=build_layer(0);
#ax.plot_surface(x4,y4,z4,rstride=1,cstride=1,color='purple ' ) ) ) ) ) ) )。
x3,y3,z3=build _ Gaussian _ layer (0,1 ) ) ) ) ) ) ) ) x3,y3,z3 ) ) ) x3 ) ) x3 ) ) x3 ) z3 ) ) z3 ) ) 652 )
ax.plot_surface(x3,y3,z3,rstride=1,cstride=1,cmap='rainbow ' ) ) ) ) ) ) ) ) ) ) )。
plt.show () )
这是第三张图像的代码
导入编号为NP
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
x,y=np.mgrid[-1:1:20j,-1:1:20j]
z=x*NP.exp(-x**2-y**2) )
ax=PLT.subplot(111,projection='3d ' ) )。
ax.plot_surface(x,y,z,rstride=2,cstride=1,cmap=plt.cm.coolwarm,alpha=0.8 ) ) ) )。
ax.set_xlabel('x ' ) )。
ax.set_ylabel('y ' ) )。
ax.set_zlabel('z ) ) )。
plt.show () )
以上,用python制作三维正态分布图的方法,是小编给大家分享的全部内容。 希望您能参考。 另外,教程网的检索也请多多关照。