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

时间:2016-02-16 01:30:40

标签: python matplotlib hex bin

我正在尝试使用matplotlib和python从hexbin()方法中获取六边形的顶点。得到了没有。使用.get_arrays()计算每个六边形中的点,并尝试使用get_paths()获取顶点坐标,但它只给出了1个路径(即只有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

[正在生成的输出映射具有多于1个六边形。由于帐户限制,我无法在此处上传,因为我是新手。[2]

 [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))]

1 个答案:

答案 0 :(得分:1)

我自己以我解决它的方式回答它并且它有效。

步骤1:使用im.get_paths()获取样本六边形坐标,如上所述。

步骤2:使用im.get_offsets()获取hexbin()方法创建的所有六边形的偏移量。它为所有六边形提供x和y偏移。

步骤3:只需将偏移量添加到步骤1中获得的样本“路径”坐标中,这将给出六边形集合的实际坐标。