【问题标题】:Converting Arrays of Data into an Approximated Contour Line Map (Python)将数据数组转换为近似等高线图 (Python)
【发布时间】:2020-08-24 01:22:10
【问题描述】:

我有 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()

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

【问题讨论】:

    标签: python matplotlib numpy-ndarray contour approximation


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 2023-02-08
      • 2022-10-22
      • 2021-10-06
      • 2020-03-29
      • 2017-11-18
      • 2013-10-16
      • 2018-01-07
      • 1970-01-01
      相关资源
      最近更新 更多