Matplotlib- 网格

Matplotlib- meshgrid

我想为网格的解绘制曲面图。我的域在 x 和 y 方向上的范围都是 [-1, 1]。我知道我需要为 plot_surface(x,y,z) 提供 x 和 y 的二维数组。但是,我不明白如何为 z 安排这个。

为了让事情更清楚,假设我在每个方向上采用 3 点的网格间距。我最终分别在 x 和 y 方向上得到 [-1, 0, 1] 和 [-1, 0, 1]。这给了我 9 个点,我需要评估 z。这是我写的:

x = np.linspace(-1,1, 3)
y = np.linspace(-1,1, 3)
X,Y = np.meshgrid(x, y)
# Remaining code uses plot_surface(X, Y, Z_approx)
#

每个 X 和 Y 都是二维数组,每个长度为 3。但是,我的 Z "approximation" 的长度为 9。然后如何将它们绘制在一起?

这是网格的样子!

*(-1,1) ____ *(0,1) ____ *(1,1)

*(-1,0) ____ *(0,0) ____ *(1,0)

*(-1,-1)____ *(0,-1)____ *(1,-1)

当我们不知道您的 z 矩阵是什么时,很难提供答案,所以这是我的两个最佳猜测:

  1. z 是 1x9(或 9x1)向量,在这种情况下,应使用 np.reshape 命令将其整形为 3x3 矩阵。

例如

Z = np.reshape(Z_approx, (3, 3))

  1. z 是一个 9x9 矩阵,在这种情况下,我只需使用这个小改动就可以将 xy 设为 9x9 矩阵,而不是 3x3。

例如

x = np.linspace(-1,1, 9)
y = np.linspace(-1,1, 9)

希望对您有所帮助,或者您可以让我们进一步了解您的 z 矩阵。