fork download
  1. import numpy as np
  2. import PyQt5 # make sure pyqtgraph imports Qt5
  3. import pyqtgraph
  4.  
  5. from artiq.applets.simple import TitleApplet
  6.  
  7.  
  8. class XYPlot(pyqtgraph.PlotWidget):
  9. def __init__(self, args):
  10. pyqtgraph.PlotWidget.__init__(self)
  11. self.args = args
  12.  
  13. def data_changed(self, data, mods, title):
  14. try:
  15. y = data[self.args.y][1]
  16. except KeyError:
  17. return
  18. x = data.get(self.args.x, (False, None))[1]
  19. if x is None:
  20. x = np.arange(len(y))
  21. error = data.get(self.args.error, (False, None))[1]
  22. fit = data.get(self.args.fit, (False, None))[1]
  23.  
  24. if not len(y) or len(y) != len(x):
  25. return
  26. if error is not None and hasattr(error, "__len__"):
  27. if not len(error):
  28. error = None
  29. elif len(error) != len(y):
  30. return
  31. if fit is not None:
  32. if not len(fit):
  33. fit = None
  34. elif len(fit) != len(y):
  35. return
  36.  
  37. self.clear()
  38. self.plot(x, y, pen=None, symbol="x")
  39. self.setTitle(title)
  40. if error is not None:
  41. # See https://g...content-available-to-author-only...b.com/pyqtgraph/pyqtgraph/issues/211
  42. if hasattr(error, "__len__") and not isinstance(error, np.ndarray):
  43. error = np.array(error)
  44. errbars = pyqtgraph.ErrorBarItem(
  45. x=np.array(x), y=np.array(y), height=error)
  46. self.addItem(errbars)
  47. if fit is not None:
  48. xi = np.argsort(x)
  49. self.plot(x[xi], fit[xi])
  50.  
  51.  
  52. def main():
  53. applet = TitleApplet(XYPlot)
  54. applet.add_dataset("y", "Y values")
  55. applet.add_dataset("x", "X values", required=False)
  56. applet.add_dataset("error", "Error bars for each X value", required=False)
  57. applet.add_dataset("fit", "Fit values for each X value", required=False)
  58. applet.run()
  59.  
  60. if __name__ == "__main__":
  61. main()
Runtime error #stdin #stdout #stderr 0.01s 47720KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "<builtin>/app_main.py", line 75, in run_toplevel
  File "prog.py", line 1, in <module>
    import numpy as np
ImportError: No module named numpy