Pyt*_*029 5 python matplotlib contour approximation numpy-ndarray
我有 3 个由 3 个列表组成的数组:
\n x = np.array(xlist)\n y = np.array(ylist)\n z = np.array(zlist)\n
Run Code Online (Sandbox Code Playgroud)\n其中每个列表代表 x 坐标、y 坐标以及每个指定坐标的权重。每个列表中有大约 3000 个值(对应于 3000 个单独的点,每个点具有一定的权重 z)。
\n问题是,这些值是非常精确的浮点数,精度达到 10 级。但是,我想要做的是能够创建 \xe2\x80\x9cn\xe2\x80\x9d 数量大致均匀分布的轮廓线(不是填充颜色,只是一些闭合的细线),其阈值为近似。
\n尽管我的 z 点非常精确并且可能没有 2 个是精确的,但它们有很多,并且作为一个整体在 3d 中绘制时形成一个 \xe2\x80\x9chollowed mountain\xe2\x80\x9d 类似的形状(所以在在我的想象中,轮廓线只是均匀分布的水平切片)。
\n我没有表示 z = f(x,y) 的函数。因此我不能只这样做:
\nplt.contour(x,y,z, contour_num)\n
Run Code Online (Sandbox Code Playgroud)\n因为这揭示了 z 必须是二维数组的预期错误。
\n然而,z 只是一组仅与基于位置的 x 和 y 相关的点。
\n如何在没有网格的情况下绘制此 \xe2\x80\x9cap 近似等高线图 \xe2\x80\x9d (是否有直接使用数据执行此操作的手动方法?)?
\n编辑注意:
\n另外,正如您所知,当我尝试类似的操作时出现的错误是 \xe2\x80\x9cValue Error: Cannot reshape array of size 3000 into shape (3000,3000)\xe2\x80\x9d:
\n X,Y = np.meshgrid(x,y)\n Z = z.reshape(3000,3000)\n plt.contour(X,Y,Z)\n plt.show()\n
Run Code Online (Sandbox Code Playgroud)\n如果没有其他方法来创建等高线图,那么为什么这不起作用呢?我怎样才能让它发挥作用?
\n