Skip to content

Instantly share code, notes, and snippets.

@cpascual
Last active March 10, 2017 12:52
Show Gist options
  • Save cpascual/16b7fa2cab18ae27f1483d79400f7051 to your computer and use it in GitHub Desktop.
Save cpascual/16b7fa2cab18ae27f1483d79400f7051 to your computer and use it in GitHub Desktop.
Proof of concept for plotting a taurus attribute with pyqtgraph
import sys
import numpy
from taurus.external.qt import QtGui
from taurus.qt.qtgui.application import TaurusApplication
from taurus.qt.qtgui.base import TaurusBaseComponent
from pyqtgraph import PlotDataItem
class TaurusPlotDataItem(PlotDataItem, TaurusBaseComponent):
"""A taurus-ified PlotDataItem"""
def __init__(self, *args, **kwargs):
PlotDataItem.__init__(self, *args, **kwargs)
TaurusBaseComponent.__init__(self, 'TaurusBaseComponent')
def handleEvent(self, evt_src, evt_type, evt_value):
try:
y = evt_value.rvalue
self.setData(y)
except Exception, e:
self.warning('Exception in handleEvent: %s', e)
if __name__ == '__main__':
import pyqtgraph as pg
app = TaurusApplication()
# a standard pyqtgraph widget
w = pg.PlotWidget()
# adding a regular data item (non-taurus)
c1 = pg.PlotDataItem(pen='b', fillLevel=0, brush='c')
c1.setData(numpy.arange(300)/300.)
w.addItem(c1)
# adding a taurus data item
c2 = TaurusPlotDataItem(pen='r', symbol='o')
c2.setModel('eval:Quantity(rand(256),"m")')
w.addItem(c2)
w.show()
sys.exit(app.exec_())
@cpascual
Copy link
Author

Note that pyqtgraph accepts pint.Quantities out-of-the-box!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment