Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在x轴上设置刻度动画?_Python_Matplotlib - Fatal编程技术网

Python 如何在x轴上设置刻度动画?

Python 如何在x轴上设置刻度动画?,python,matplotlib,Python,Matplotlib,我有一个matplotlibaxes实例,在该实例中,我正在通过blit设置AxesImage的动画 我想做的是在x轴上设置蜱虫的动画。 我经常更新AxeImage(以及随后绘制的AxeImage)上的数据,每次更新时,我都想移动一个额外的勾号,以突出显示某些内容的位置。 这就是我现在正在做的: axis = axes.get_xaxis im.set_data(new_data) axis.set_ticks([10,20,30,x,t]) axis.set_ticklabels(["p",

我有一个
matplotlib
axes
实例,在该实例中,我正在通过
blit
设置
AxesImage
的动画

我想做的是在x轴上设置蜱虫的动画。 我经常更新AxeImage(以及随后绘制的AxeImage)上的数据,每次更新时,我都想移动一个额外的勾号,以突出显示某些内容的位置。 这就是我现在正在做的:

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不包括轴“内部”之外的任何内容(例如,它不包括勾号标签、标题等)

解决这个问题的一个快速方法是,当你进行闪电扫描时,只需抓取图形的整个区域。(例如,
background=canvas.copy\u from\u bbox(图bbox)

如果您有多个子情节,并且只想为其中一个子情节设置动画,则可能会导致问题。在这种情况下,您可以按照
background=canvas.copy_from_bbox(ax.bbox.expanded(1.1,1.2))
的思路执行操作。不过,你必须猜测你需要的比率

如果您需要刻度标签的确切范围,那么它会有点棘手。最简单的方法是遍历ticklab对象,并获得与
ax.bbox
的联合。您可以将其设置为一行:
ax.bbox.union([label.get\u window\u extent()用于ax.get\u xticklabels()]中的标签)


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

答案非常透彻!我认为第一个选项就足够了(我正在同步设置所有子地块的动画),但它们都可能变得有用!