例如:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
x=np.array([1,2,3])
y=np.array([2,4,6])
z=np.array([3,1,4])
x_grid,y_grid = np.meshgrid(x,y)
ax.plot_surface(x_grid,y_grid,z)
运行上述代码会报错:
我发现错误的原因在于:plot_surface()的输入中x_grid,y_grid都是2维数组,z也应该是二维的方能与之对应,函数才会知道哪那个点对应哪个z值。插入下述代码即可
z_grid = np.empty((len(x),len(y)))
for i in range(len(x)):
z_grid[i][i] = z[i]
结果如下:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
x=np.array([1,2,3])
y=np.array([2,4,6])
z=np.array([3,1,4])
x_grid,y_grid = np.meshgrid(x,y)
z_grid = np.empty((len(x),len(y)))
for i in range(len(x)):
z_grid[i][i] = z[i]
ax.plot_surface(x_grid,y_grid,z_grid)