我正在尝试绘制每天几个小时的时间序列,每天之间没有空白时间。如果我使用 pg.GraphicsWindow,则效果很好。刻度标签为 9:00 10:00 ..17:00。如果我使用 pg.PlotWidget 或 pg.PlotWindow,Alt2 和 Alt3 则不起作用,但会显示范数 0.1 0.2 ..。代码运行并调用 TimeAxisItem 类,但 x 轴刻度标签不会更改。我有一个更大的程序,其中包含 Qt.QMainWindow() 和 QtGui.QGridLayout() ,它不接受 pg.GraphicsWindow() 。我错过了什么??如何在 PlotWidget 中设置刻度标签?
# -*- coding: utf-8 -*-
''' Setting x-axis labels for time series
'''
import datetime as dt
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
class TimeAxisItem(pg.AxisItem):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
tr=np.arange('2016-06-10 09:00', '2016-06-10 18:00', dtype='datetime64[h]')
tnorm=(tr-tr[0])/(tr[-1]-tr[0]) #Map time to 0.0-1.0
ttick=list()
for i,t in enumerate(tr):
tstr=np.datetime64(t).astype(dt.datetime)
ttick.append( (tnorm[i], tstr.strftime("%H:%M")) )
self.setTicks([ttick])
def main():
app = QtGui.QApplication([])
x=np.arange(0.0, 1.0, 0.02)
y=np.sin(2*np.pi*x)
#Alt 1
win = pg.GraphicsWindow(title="Basic plotting")
plot=win.addPlot(title='Timed data', axisItems={'bottom': TimeAxisItem(orientation='bottom')})
plot.plot(x,y)
# Alt 2
#win = pg.PlotWidget(title="Basic plotting")
#win.plot(title='Timed data', axisItems={'bottom': TimeAxisItem(orientation='bottom')})
#win.plot(x,y)
#Alt 3
#win=pg.PlotWindow(title="Basic plotting")
#win.plot(title='Timed data', axisItems={'bottom': TimeAxisItem(orientation='bottom')})
#win.plot(x,y)
win.show()
app.exec_()
if __name__ == '__main__':
main()
# -*- coding: utf-8 -*-
''' Setting x-axis labels for time series
Window, pyqtgraph (09.10) numpy (1.11.1) PyQt4(4.11.4)
'''
import datetime as dt
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
def main():
app = QtGui.QApplication([])
#Plot some data for 2 days
x=np.arange(0.0, 1.0, 0.02)
day0=100*np.sin(2*np.pi*x) # Just som data to plot
day1=100*(np.cos(2*np.pi*x)-1) # Just som data to plot
xx=np.concatenate([x,x+1]) # two days
yy=np.concatenate([day0,day1])
win = pg.PlotWidget(title="Plotting time series")
win.resize(1600,400)
win.plot(xx,yy)
# Tick labels
# tick labels one day
tr=np.arange('2016-06-10 09:00', '2016-06-10 18:00', dtype='datetime64[2h]')
tday0=(tr-tr[0])/(tr[-1]-tr[0]) #Map time to 0.0-1.0 day 2 1.0-2.0 ...
tday1=tday0+1
tnorm=np.concatenate([tday0,tday1])
tr[-1]=tr[0] # End day=start next day
# Create tick labels for axis.setTicks
ttick=list()
for i,t in enumerate(np.concatenate([tr,tr])):
tstr=np.datetime64(t).astype(dt.datetime)
ttick.append( (tnorm[i], tstr.strftime("%H:%M")))
ax=win.getAxis('bottom') #This is the trick
ax.setTicks([ttick])
# Set grid x and y-axis
ax.setGrid(255)
ay=win.getAxis('left')
ay.setGrid(255)
win.show()
app.exec_()
if __name__ == '__main__':
main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)