我试图获取并设置matplotlib中可拖动图例的位置。我的应用程序由一个交互式GUI组成,它具有重绘/绘图功能,可执行以下步骤:我如何获得并设置matplotlib中可拖动图例的位置
- 保存当前图例的位置。
- 清除当前坐标轴并执行各种绘图操作,这些操作可能会或可能会将标签添加到其绘图中。 ()并恢复图例的旧位置。
在这些步骤之间,用户可以自由拖动图例,目标是在绘制图表时保留图例位置。
我的第一种方法是在步骤1和步骤3中使用oldpos = legend.get_bbox_to_anchor()
和legend.set_bbox_to_anchor(oldpos)
。但是,这会导致图例完全脱离可见区域。
请注意,我必须使用ax.legend()
而不能使用fig.legend(lines, labels)
,因为第2步是完全解耦,也就是说,我不知道线和标签在步骤3中任何根据问题的答案How to position and align a matplotlib figure legend?似乎有这两种关于轴或图形坐标的可能性之间的区别。显然我的问题需要图形坐标,但我还没有完全理解如何将bbox转换为“图形坐标中的bbox”。
我刚刚意识到的更严重的问题是,显然legend.get_bbox_to_anchor()
似乎总是返回相同的值,而不考虑拖动位置。所以也许锚只能被(ab-)用来操纵静态图例的位置?是否有另一种/适当的方式来保存和恢复可拖动图例的位置?