如何设置X轴上记号的动画?

2024-10-01 09:41:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个matplotlibaxes实例,我在其中通过blit生成一个AxesImage动画。在

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


Tags: 数据实例绘图dataartist动画drawset
1条回答
网友
1楼 · 发布于 2024-10-01 09:41:44

axes 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()])。在

无论如何,我认为这三个选项中的一个应该能满足你的需要。在

相关问题 更多 >