gpt4 book ai didi

带工具栏的 matplotlib 动画

转载 作者:行者123 更新时间:2023-12-04 06:22:12 24 4
gpt4 key购买 nike

我有一个巨大的数组,我正在尝试创建动画效果。我的做法是:

def initPlot(self):
if not hasattr( self, 'axes' ):
self.axes = self.figure.add_subplot( 111 )

self.axes.set_title('Monitor data', size=12)

pylab.setp(self.axes.get_xticklabels(), fontsize=8)
pylab.setp(self.axes.get_yticklabels(), fontsize=8)
self.maxy = 0
self.miny = 0
for i, pt_list in enumerate( self.point_lists ):
plot_pts = num.array( pt_list )
clr = self.clr_list[i]
self.plot_data = self.axes.plot( plot_pts, linewidth= 1.0, color=clr, )[0]
self.plot_data.set_xdata(num.arange(len(plot_pts)))
self.plot_data.set_ydata(plot_pts)
maxPlot = plot_pts.max()
minPlot = plot_pts.min()
if maxPlot > self.maxy:
self.maxy = maxPlot
if minPlot < self.miny:
self.miny = minPlot


def draw( self ):
"""Draw data."""
self.axes.set_xbound(lower=self.startPosition, upper=self.startPosition + 1000)
self.axes.set_ybound(lower=self.miny - 50, upper = self.maxy + 50)
self.canvas.draw()


def onTimerPassed(self, event):
if self.animation:
self.startPosition = self.startPosition + 10
self.draw()

现在这工作正常,动画正是我所期望的。但是我还需要集成一个 NavigationToolbar2WxAgg。我的问题来了。当动画处于事件状态时,任何缩放/重新定位等都会自动取消我可以通过 self.canvas.draw() 判断的内容。所以我的问题是如何进行绘图更新以保持工具栏完成的设置?

问候,
博格丹

最佳答案

您在 draw() 中强制限制为 (startPosition, startPosition+1000) 和 (miny-50, miny+50)方法。对于您的下一帧,您必须根据您当前的限制来推断您的限制应该是什么。

假设您希望 xlim 每帧增加 1000,但保留 yscale。您可以执行以下操作:

def draw(self):
xlim = self.axes.get_xlim()
self.axes.set_xlim(xlim[0]+1000, xlim[1]+1000)
# ylim unchanged
self.canvas.draw()

关于带工具栏的 matplotlib 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com