Matplotlib实时更新中的滚动条

时间:2018-09-10 12:01:07

标签: matplotlib

我可以实现以下目标:

  1. GetData函数可在24x7小时内继续运行并生成数据。 GetData将产生两个值。 time是x数组,value是y数组。
  2. 导入绘图类并实时绘图。

该窗口将保持移动(从左到右),而x窗口将保持5分钟(xmax-xmin=datetime.detlta(minutes=5)。旧数据将不可见。 如果我不设置xlim,情节将会挤在一起,而且不会那么美。

也就是说,当绘图实时更新时,我可以滚动回到上一个数据以查看“历史数据”。

我知道我们可以使用matplotlib.pyplot.savefig将地块保存到图像中。还有其他建议吗?我可以知道Matplotlib下是否存在带有实时更新的滚动条?

谢谢。

1 个答案:

答案 0 :(得分:0)

this的帮助下,最终答案如下。

作为问题的统计信息,x是时间戳,将新数据添加到列表中。

    self.timestampRange = [min(self.timestamp1), max(self.timestamp1) + dt.timedelta(minutes=0.1)]  # datetime style
    self.loadingValueRange = [min(self.loadingValue), max(self.loadingValue) + 1]

然后设置滑块并编写更新功能。只需注意x数组的类型即可。

#Slider setting
    self.ssb = Slider(self.axsb, 'Scrollbar',
                              dates.date2num(self.timestampRange[0]),
                              dates.date2num(self.timestampRange[1]))
    self.ssb.on_changed(self.update)

    def update(self,val):
        self.sb=self.ssb.val
        self.xmin_time=dates.num2date(self.sb)-dt.timedelta(minutes=1)
        self.xmax_time=dates.num2date(self.sb)
        self.loadingGraph.axis([self.xmin_time,self.xmax_time,min(self.loadingValueRange), max(self.loadingValueRange)])
        fig.canvas.draw_idle()

希望有帮助。谢谢。