将数据数组转换为近似等高线图 (Python)

Converting Arrays of Data into an Approximated Contour Line Map (Python)

我有 3 个数组,由 3 个列表组成:

 x = np.array(xlist)
 y = np.array(ylist)
 z = np.array(zlist)

其中每个列表代表 x 坐标、y 坐标和每个指定坐标的权重。每个列表中大约有 3000 个值(对应于 3000 个单独的点,每个点都有一些权重 z)。

事实是,这些值非常精确,精度为 10 级。然而,我想要做的是能够创建“n”个具有近似阈值的大致均匀间隔的轮廓线(不是填充色,只是一些封闭的细线)。

尽管我的 z 点非常精确并且可能没有 2 个是精确的,但它们有很多,并且作为一个整体在 3d 中绘制时形成一个“空心山”状的形状(所以在我的想象中,轮廓线将只是均匀间隔的水平切片)。

我没有表示 z = f(x,y) 的函数。因此我不能只这样做:

plt.contour(x,y,z, contour_num)

因为这揭示了 z 必须是二维数组的预期错误。

但是,z 只是一组点,仅与基于位置的 x 和 y 相关。

如何在没有网格的情况下绘制此“近似等高线图”(是否有直接使用数据进行此操作的手动方法?)?

编辑说明:

此外,如你所知,当我尝试这样的操作时得到的错误是“值错误:无法将大小为 3000 的数组重塑为形状 (3000,3000)”:

 X,Y = np.meshgrid(x,y)
 Z = z.reshape(3000,3000)
 plt.contour(X,Y,Z)
 plt.show()

如果没有其他方法可以创建等高线图,那么为什么这不起作用?我怎样才能让它发挥作用?

好的,我回答了我自己的问题。方法是通过 plt.tricontour(x,y,z,num_contours)。完美运行。