我希望这可以在不提供代码的情况下得到解答,因为有超过一千行,而且我不确定问题出在哪里。
基本上,我已经创建了一个图表类,可以实时滚动和更新数据。有许多功能,如多个y轴,暂停能力,添加垂直值线等等,因此有很多LOC。几乎所有事情都运作良好。
我通过抓取背景来实现滚动,然后在新数据进入时重置和blitting。我有每个行的单独子图(对于多个y轴)并重置限制并仅在主要子图上调用draw_artist x和y轴。
问题在于,当数据滚动时,根据当前的方面,x轴刻度标记可以在每次新数据进入时不断改变它们的间距。所以它可能看起来像:0,2,4,6,8 ,10,12在一瞬间,然后0,5,10在下一个。
答案 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自动确定初始或更改方面的间距,然后在更新新数据时显式使用该值。