【发布时间】: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