繁体   English   中英

动画 matplotlib 轴/刻度

[英]Animating matplotlib axes/ticks

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

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

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 不包括轴,这可能吗? 如果是这样,我该如何制作动画? 我应该从其他地方复制和恢复吗?

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

解决此问题的一种快速方法是在您进行 blitting 时仅抓住图形的整个区域。 (例如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()])

无论如何,我认为这三个选项中的一个应该可以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM