我有一个matplotlib
axes
实例,我在其中通过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不包括轴,这可能吗?如果是这样的话,我如何制作动画呢?我应该从其他地方复制和恢复吗?在
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()])
。在无论如何,我认为这三个选项中的一个应该能满足你的需要。在
相关问题 更多 >
编程相关推荐