矩形网格上的曲面图给出"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实现方式的产物-请查看索引上的注释。

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

  • Z = np.reshape(FV,(N_x,N_y))更改为Z = np.reshape(FV,(N_y,N_x))。也许有点不直观,但效果很好
  • 使用关键字参数indexing = 'ij'np.meshgrid将其更改为随行变化的x变量——这是我们在使用矩阵时非常习惯考虑的问题

最新更新