在滚动的MATPLOTLIB图表中保持Constant Tick Spacing

时间:2016-05-17 08:03:21

标签: python matplotlib

我希望这可以在不提供代码的情况下得到解答,因为有超过一千行,而且我不确定问题出在哪里。

基本上,我已经创建了一个图表类,可以实时滚动和更新数据。有许多功能,如多个y轴,暂停能力,添加垂直值线等等,因此有很多LOC。几乎所有事情都运作良好。

我通过抓取背景来实现滚动,然后在新数据进入时重置和blitting。我有每个行的单独子图(对于多个y轴)并重置限制并仅在主要子图上调用draw_artist x和y轴。

问题在于,当数据滚动时,根据当前的方面,x轴刻度标记可以在每次新数据进入时不断改变它们的间距。所以它可能看起来像:0,2,4,6,8 ,10,12在一瞬间,然后0,5,10在下一个。

1 个答案:

答案 0 :(得分:0)

好的,我得到了解决方案。当新数据进入时,我调用以下代码:

if self.tickSpacing is not None:
    self.MPLsubPlot.xaxis.set_major_locator(ticker.MultipleLocator(self.tickSpacing))
else:
    self.MPLsubPlot.xaxis.set_major_locator(ticker.AutoLocator())

self.tickSpacing初始化为None,当用户启动鼠标按下平移/缩放时设置为None。在鼠标向上(一旦平移/缩放完成),将调用以下函数:

def _updateSpacing(self):
    labels = self.MPLsubPlot.xaxis.get_ticklocs()
    if len(labels) > 1:
        self.tickSpacing = labels[1] - labels[0]

这允许matplotlib自动确定初始或更改方面的间距,然后在更新新数据时显式使用该值。