交互式matplotlib图:定义和绘制多边形

时间:2020-05-05 08:50:48

标签: python matplotlib

我使用$(document).ready(function() { $("body").tooltip({ selector: '[data-toggle=tooltip]' }); }); 库创建了六边形网格。我的程序显示的图是交互式的:它允许使用鼠标左键选择一个六边形,从而将六边形填充为黑色。这样,我就标记了多边形的圆周:

hexagons

现在,我想连接填充的六边形,以便可以看到多边形的圆周。我希望在按下键时绘制多边形。这是我的主意:

matplotlib.patches

变量 def draw_circumference(event): if event.key == 'd': print(circumference) plt.Polygon(circumference, fill=False, edgecolor='k') #fig.canvas.draw() fig.canvas.mpl_connect("key_press_event", draw_circumference) 包含标记的六边形各自中心的(x,y)坐标,作为元组列表:circumference。我评论了[(x1,y1), x2,y2), ..., (xn,yn)],因为我认为它应该在没有此行的情况下工作。但是到目前为止,无论有没有fig.canvas.draw(),它都行不通。

但是,该函数被调用。我知道这是在执行打印语句时执行的。

有什么想法我做错了吗?

1 个答案:

答案 0 :(得分:2)

很难在没有完整代码的情况下进行调试,但是通常您必须在轴上显式添加一个补丁程序艺术家,例如多边形。此外,由于轴的内容已更改,您可能确实需要重绘调用。

p = plt.Polygon(circumference, ...)
ax.add_patch(p) # or ax.add_artist(p)
fig.canvas.draw()
相关问题