矩形网格上的曲面图给出 "ValueError"

Surface plot on Rectangular Mesh giving "ValueError"

我正在尝试在矩形网格上绘制曲面图。这是我的代码:

Z = np.reshape(FV,(N_x,N_y))
x = np.linspace(0,1,N_x)
y = np.linspace(0,1,N_y)

X,Y = np.meshgrid(x,y)
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
                cmap='viridis', edgecolor='none')

我收到错误: ValueError: shape mismatch: objects cannot be broadcast to a single shape

这仅在 N_x == N_y 时有效,如何在 N_x != N_y?

时使其有效

这恰好是 numpy.meshgrid 实现方式的产物 - 查看 indexing.

上的注释

y 变量随着默认索引 'xy' 沿行变化(很明显,x 变量沿列变化! ) - 从几何角度考虑 - 水平方向是 x,垂直方向是 y。所以你有两个可能的解决方案:

  • Z = np.reshape(FV,(N_x,N_y)) 更改为 Z = np.reshape(FV,(N_y,N_x))。可能有点 non-intuitive,但工作正常。
  • 使用关键字参数 indexing = 'ij'np.meshgrid 来更改为 x 变量沿行变化 - 这是我们在使用时习惯思考的问题矩阵。