直接上代码:
import numpy as np
import matplotlib.pyplot as plt
# 导入显示3D的库
from mpl_toolkits.mplot3d import Axes3D
# 定义一个图片
fig = plt.figure()
# 对此图片增加一个维度,使其成为3D图像
ax = Axes3D(fig)
# 定义X,Y值
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
# 把X,Y坐标网格化
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
# 设置高度值
Z = np.sin(R)
# 把X,Y,Z的数据在图片中显示,rstride(Row Stride):行跨度,cstride(Column Stride):列跨度,增加此值会增加跨度。cmap(Color Map):颜色映射表,rainbow为彩虹颜色
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap="rainbow")
plt.show()
显示图为:
我们还想在这个图中增加等高线图:
# 显示等高线图
ax.contourf(X, Y, Z, offset=-2, cmap="rainbow", zdir='z')
ax.set_zlim(-2, 2)
这时显示为: