我想用新的替换matplotlib图例,但保持替换图例的相同(可能是任意)位置。
为什么以下代码不起作用?
import matplotlib.pyplot as plt plt.plot(range(10)) ax = plt.gca() leg = plt.legend(['a'], loc='lower left') bb = leg.get_bbox_to_anchor().inverse_transformed(ax.transAxes) plt.legend(['b'], bbox_to_anchor=bb)
答案 0 :(得分:1)
回答问题为什么问题中的代码不起作用的问题:
仅在绘制图形时在运行时确定图例的位置。此外,未设置bbox_to_anchor,因此它将是完整的轴(b
)。
您可以做的是首先绘制画布,然后获取窗口范围
$(document).ready(function() {
var panel1 = new tabpanel("tabpanel1", false);
$(panel1.$panel).mouseout(function(){
## do something
});
});
然而,这不会给你正确的位置(只接近它)。
现在一个可能的解决方案可能不是替换图例,而只是更新它的内容:
(0,0,1,1)
否则,如果不能选择更新,则需要旧图例中的bbox_to_anchor和loc参数:
ax.figure.canvas.draw()
bb = leg.get_window_extent().inverse_transformed(ax.transAxes)
在模式设置为“展开”的情况下,这可能仍会失败。只有在使用相同的fancybox参数创建新图例时,它才是准确的。
答案 1 :(得分:0)
除非我误解,否则就这样做:
import matplotlib.pyplot as plt
plt.plot(range(10))
ax = plt.gca()
location = 'lower left'
while 1:
plt.legend(['a'], loc=location)
plt.pause(1)
plt.legend(['b'], loc=location)
plt.pause(1)