如何从hexbin() Matplotlib方法的Polycollection输出中获取六边形的顶点?

3

我正在尝试使用matplotlib和Python从hexbin()方法绘制的六边形中获取顶点。使用.get_arrays()获取每个六边形中的点数,并尝试使用get_paths()获取顶点坐标,但它只给出一个路径(即仅1个六边形的顶点)。

如何检索所有六边形的顶点?下面是尝试的代码及输出。

x, y = np.random.normal(size=(2, 10000))
fig, ax = plt.subplots()
im = ax.hexbin(x, y, gridsize=20)
paths=im.get_paths()
print(paths)
fig.colorbar(im, ax=ax)

enter image description here

正在生成的输出地图拥有超过一个六边形。由于我是新手,帐户受到限制,无法上传它。

 [Path(array([[ 0.18489907, -0.1102285 ],
   [ 0.18489907,  0.1102285 ],
   [ 0.        ,  0.22045701],
   [-0.18489907,  0.1102285 ],
   [-0.18489907, -0.1102285 ],
   [ 0.        , -0.22045701],
   [ 0.18489907, -0.1102285 ]]), array([ 1,  2,  2,  2,  2,  2, 79], dtype=uint8))]

有什么问题吗?看起来你在那个路径对象中有顶点。 - Paul H
但是如果没有一个最小但完整的工作示例,我们怎么知道呢? - Paul H
你的最小示例还应包括生成最小数据集的代码。除了你自己,没有人拥有你正在阅读的文件。 - Paul H
谢谢。那是一个很好的最小示例。如果您发布图像链接,我将为您嵌入问题。之后,我们只需要找到知道答案的人! - Paul H
谢谢!这是图片链接:https://goo.gl/photos/N9MN54GVeF75Fggq7。我认为如果我获取超过1个六边形的坐标,它应该对我有用。 - Rishu Vaid
显示剩余3条评论
1个回答

2

我会分享一下我解决它的方法,它确实有效。

步骤1:使用如上述问题中所示的im.get_paths()方法获取样本六边形坐标。

步骤2:使用hexbin()方法创建的所有六边形的偏移量可以通过im.get_offsets()方法获得。它给出了所有六边形的x和y偏移量。

步骤3:只需将步骤1获取的样本“path”坐标添加到偏移量中,即可获得六边形集合的实际坐标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接