如何解决将数据数组转换为近似轮廓线图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必须是2D数组的预期误差。
但是,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)。完美运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。