【问题标题】:how to get vertices of hexagons from the polycollection output of hexbin() matplotlib method?如何从 hexbin() matplotlib 方法的 polycollection 输出中获取六边形的顶点?
【发布时间】:2016-02-16 01:30:39
【问题描述】:

我正在尝试使用 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)

[正在生成的输出地图有超过 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))]

【问题讨论】:

  • 有什么问题?看起来您在该路径对象中有顶点。
  • 问题是路径数组只有一个六边形的顶点,但不是全部。我想要所有的六边形。
  • 但是如果没有一个最小但完整的工作示例,我们怎么知道呢?
  • 我用完整的代码更新了这个问题。请看一下,如果您对此有任何想法,请告诉我?
  • 您的最小示例还应包括生成最小数据集的代码。没有人,但您正在阅读此文件。

标签: python matplotlib hex bin


【解决方案1】:

我自己用我解决它的方式来回答它,而且它奏效了。

第 1 步:使用 im.get_paths() 获取示例六边形坐标,如上述问题中所做的那样。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 2020-02-11
    • 2019-02-14
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    相关资源
    最近更新 更多