pyqtgraph : how to plot time series (date and time on the x axis)?
13,430
Take a look at this gist. You could modify tickStrings() to change format string according to scale
Author by
dplamp
Updated on June 28, 2022Comments
-
dplamp almost 2 years
I want to plot time series with pyqtgraph, and display the date and/or time on the x axis scale, but I couldn't find how to do it.
Edit 1 : It seems like I should subclass AxisItem and reimplement tickStrings(). I'll look into this.
Edit 2 : Here is how I subclassed AxisItem. The documentation shows how to use the class.
from __future__ import print_function from PySide.QtCore import * from PySide.QtUiTools import * from PySide.QtGui import * import pyqtgraph as pg import time ## Reimplements \c pyqtgraph.AxisItem to display time series. # \code # from caxistime import CAxisTime # \# class definition here... # self.__axisTime=CAxisTime(orientation='bottom') # self.__plot=self.__glyPlot.addPlot(axisItems={'bottom': self.__axisTime}) # __plot : PlotItem # \endcode class CAxisTime(pg.AxisItem): ## Formats axis label to human readable time. # @param[in] values List of \c time_t. # @param[in] scale Not used. # @param[in] spacing Not used. def tickStrings(self, values, scale, spacing): strns = [] for x in values: try: strns.append(time.strftime("%H:%M:%S", time.gmtime(x))) # time_t --> time.struct_time except ValueError: # Windows can't handle dates before 1970 strns.append('') return strns