pyqtgraph:如何在 00:00 时间之前不显示时间序列(使用 AxisItem)
Posted
技术标签:
【中文标题】pyqtgraph:如何在 00:00 时间之前不显示时间序列(使用 AxisItem)【英文标题】:pyqtgraph: how to do not display time series before 00:00 time (using AxisItem) 【发布时间】:2015-06-16 08:41:53 【问题描述】:如何显示从 00:00 开始的时间轴而不显示 00:00 之前的时间轴?图表将显示从 sersor 读取的实时数据。它将从 00:00(数据到达的时间)开始在图表的最右侧绘制数据,并随着数据的到达向左滑动。所以我想摆脱 00:00 之前的时间轴值? 感谢您的所有建议。
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
from PySide.QtCore import QTime, QTimer
from collections import deque
t = QTime()
t.start()
data = deque()
class TimeAxisItem(pg.AxisItem):
def tickStrings(self, values, scale, spacing):
return [QTime().addMSecs(value).toString('mm:ss') for value in values]
app = QtGui.QApplication([])
win = pg.GraphicsWindow()
win.resize(1000,600)
print type(win)
axis = TimeAxisItem('bottom')
plot = win.addPlot(title='Timed data',axisItems='bottom':axis,enableMenu=False)
curve = plot.plot()
now = 0
timeStart = -15000
minX =-15000
i = 0
def update():
global i, plot, curve, data,minX,now,timeStart
time = t.elapsed()
data.append('x': time, 'y': np.random.randint(0, 100))
timeStart += 1
x = [item['x'] for item in data]
y = [item['y'] for item in data]
if i == 0:
difference = x[-1]
i = 1
else:
difference = x[-1] - x[-2]
minX += difference
plot.setXRange(minX,x[-1])
curve.setData(x=x, y=y)
tmr = QTimer()
tmr.timeout.connect(update)
tmr.start(100)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
【问题讨论】:
【参考方案1】:你能为小于 0 的任何东西提供一个空白字符串吗?
def tickStrings(self, values, scale, spacing):
return ['' if value < 0 else
QTime().addMSecs(value).toString('mm:ss') for value in values]
【讨论】:
以上是关于pyqtgraph:如何在 00:00 时间之前不显示时间序列(使用 AxisItem)的主要内容,如果未能解决你的问题,请参考以下文章