1

我想知道是否有人可以解决我在将可拖动图例与多个轴结合使用时遇到的问题。

我正在使用 gridspec 和 figure (matplotlib 1.0.1, qt4 backend) 创建 2 个轴 - 没有 pyplot。当图例从一个轴拖到另一个轴并释放时,它的可拖动性停止工作。

如果图例的一部分在轴的边界之外,则可以通过单击该部分来拾取图例,但如果在轴内的图例的任何区域上单击鼠标则不能。

我尝试了Adam Fraser 的原始代码,但图例会在我的应用程序的第二个轴下滑动。

我的应用程序非常大 - 太大而无法在此处显示,因此为了说明问题,我修改了Matplotlib Legend Guide(使用 pyplot)中的一些代码,如下所示:

from matplotlib.pyplot import *

subplot(211)
plot([1,2,3], label="test1")
plot([3,2,1], label="test2")
leg=legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
           ncol=2, mode="expand", borderaxespad=0.)
leg.draggable(state=True, use_blit=True)

subplot(223)
plot([1,2,3], label="test1")
plot([3,2,1], label="test2")
leg=legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
leg.draggable(state=True, use_blit=True)

show()

它产生一个带有几个轴和两个图例的图。

运行代码,左右拖动图例看看效果(如果没有问题,那一定是我吃的东西,见谅)。

我怀疑一个解决方案可能相当低级,但谁知道呢,也许这是一个简单的修复?

谢谢你的帮助。

4

1 回答 1

0

我重现了这个问题。进入外星人图形的图例部分变得不可点击,就好像该图形将捕获鼠标位置事件而不将它们重新发送给其他处理程序。

重现问题的最小代码(用 ipython -pylab 进行试验)是:

In [16]: f211 = plt.subplot(211)
In [17]: f212 = plt.subplot(212)
In [18]: p1 = plot([1,2], label="test1")
In [20]: leg = legend(loc=(0.5,0.5))
In [21]: d = leg.draggable(state=True, use_blit=True)
于 2011-11-28T16:26:20.800 回答