3D图形绘制需要(x,y,z)三组值,下面通过numpy和Axes3D函数会议3D图形。其中Axes3D是mpl_toolkits.mplot3d中的一个绘图函数,mpl_toolkits.mplot3d是Matplotlib里面专门用来画三维图的工具包。
或者:from mpl_toolkits.mplot3d import *
或者:from mpl_toolkits.mplot3d import Axes3D
或者:import mpl_toolkits.mplot3d as p3d
第一步需要导入numpy,matplotib.pyplot和Axes3D函数:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #这里只是用Axes3D函数,所以只导入了Axes3D
第二步建立画布,生成数据:
fig=plt.figure()
ax=Axes3D(fig)
x=np.arange(-8,8,0.25) # 生成数据
y=np.arange(-8,8,0.25)
x,y=np.meshgrid(x,y) #生成x,y轴数据
r=np.sqrt(x2+y2)
z=np.sin®/r #生成z值
第三步绘图
ax.plot_surface(x,y,z,rstride=1,cstride=1)
ax.contourf(x,y,z,zdir=‘z’,offset=-2)
plt.show()
整个源代码如下:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #这里只是用Axes3D函数,所以只导入了Axes3D
fig=plt.figure()
ax=Axes3D(fig)
x=np.arange(-8,8,0.25) # 生成数据
y=np.arange(-8,8,0.25)
x,y=np.meshgrid(x,y) #生成x,y轴数据
r=np.sqrt(x**2+y**2)
z=np.sin(r)/r #生成z值
ax.plot_surface(x,y,z,rstride=1,cstride=1)
ax.contourf(x,y,z,zdir='z',offset=-2)
plt.show()