当前位置: 首页 > 面试题库 >

如何为X轴上的刻度线设置动画?

吕嘉荣
2023-03-14
问题内容

我有一个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不包括轴,这可能吗?如果是这样,我该如何设置动画?我应该从其他地方复制并还原吗?


问题答案:

轴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()])

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



 类似资料:
  • 问题内容: 我有一个始终从x = 0开始的JFree XY折线图。然后,根据属性文件中用户定义的设置,应用程序将根据该数字(以分钟为单位)递增。 例如,x = 0开始时,用户定义的设置为5,因此刻度变为0、5、10、15、20…,或者用户设置为3,因此变为0、3、6、9、12…非常简单。 我遇到的问题是图表开始的方式。如果我从0开始,则0在图形的中间,而不是在左下角的-0.0000005,-0.0

  • 问题内容: 如何在线性与线性图上仅在y轴上旋转次刻度? 当我使用该功能打开次刻度时,它们同时出现在x和y轴上。 问题答案: 没关系,我知道了。

  • 我希望能够为从Pandas时间序列对象绘制的时间序列图设置主要和次要XTICK及其标签。 熊猫0.9“最新信息”页面显示: “您可以使用来_pydatetime或注册时间戳类型的转换器” 但是我不知道如何使用matplotlib

  • 我有一张图表,我已经知道我需要的刻度数。有3个是分组条形图。我在绞尽脑汁想怎么强迫它。现在它显示0到我的数据集中的任何数字,并根据需要自动缩放。 默认情况下,假设我使用数字来缩放,但在这种情况下,它是Y轴上的正、中性、负(字面意思是这些标签),它们是与X轴上的特定日期相关的数据点(有2个分组条标记为AM/PM)。 图表。js文档似乎没有解释如何在ticks配置的数字之外进行调整,我也不确定如何将其

  • 我正在尝试修复python如何绘制数据。 说 和 然后我会做: x轴的刻度以5为间隔绘制。有没有办法让它显示1的间隔?

  • 我正在尝试修复python如何绘制数据。 说 和 然后我会做: x轴的刻度以5的间隔绘制。有没有办法让它显示1的间隔?