矩形网格上的曲面图给出 "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 变量沿行变化 - 这是我们在使用时习惯思考的问题矩阵。
我正在尝试在矩形网格上绘制曲面图。这是我的代码:
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 变量沿行变化 - 这是我们在使用时习惯思考的问题矩阵。