动画matplotlib轴/蜱

时间:2011-06-09 22:11:53

标签: python matplotlib

我有一个matplotlib axes个实例,其中我通过AxesImage动画blit动画。

我想做的是为x轴上的刻度设置动画。 我正在更新AxesImage上的数据(以及随后)非常频繁地绘制它的艺术家,并且在每次更新时我想移动一个额外的刻度以突出显示某些东西的位置。 这就是我现在正在做的事情:

axis = axes.get_xaxis
im.set_data(new_data)
axis.set_ticks([10,20,30,x,t])
axis.set_ticklabels(["p", "u", "z", "z", "i"])
axes.draw_artist(im)
axes.draw_artist(axis)

虽然我看到滴答正确更新,但标签不是。我认为轴bbox不包括轴,这可能吗?如果是这样,我该如何设置它的动画?我应该从其他地方复制和恢复吗?

1 个答案:

答案 0 :(得分:4)

轴bbox不包括轴“内部”之外的任何内容(例如,它不包括刻度标签,标题等)。

快速解决这个问题的方法就是在布局时抓住整个区域。 (例如background = canvas.copy_from_bbox(fig.bbox)

如果您有多个子图并且只想为其中一个子图设置动画,则可能会出现问题。在这种情况下,您可以按照background = canvas.copy_from_bbox(ax.bbox.expanded(1.1, 1.2))的方式执行某些操作。但是你必须猜测你需要的比率。

如果你需要刻度标签的确切范围,那就有点棘手了。最简单的方法是遍历ticklabel对象并获得与ax.bbox的联合。您可以将其设为一行:ax.bbox.union([label.get_window_extent() for label in ax.get_xticklabels()])

无论如何,我认为这三种选择中的一种应该做你需要的。