def figureDialog() -> Tuple[Figure, QtWidgets.QDialog]: """Make a dialog window containing a :class:`.MPLPlotWidget`. :return: The figure object of the plot, and the dialog window object. """ widget = MPLPlotWidget() return widget.plot.fig, widgetDialog(widget)
def main(): fc = linearFlowchart(('dummy', DummyNode)) node = fc.nodes()['dummy'] dialog = widgetDialog(node.ui, title='dummy node') data = testdata.get_2d_scalar_cos_data(2, 2, 1) fc.setInput(dataIn=data) return dialog, fc
def main(): app = QtWidgets.QApplication([]) widgets = [] widgets.append(test_basic_line_plot()) # widgets.append( # test_images()) # widgets.append( # test_scatter2d()) # widgets.append( # test_complex_line_plots()) # widgets.append( # test_complex_line_plots(single_panel=True)) # widgets.append( # test_complex_line_plots(mag_and_phase_format=True)) # widgets.append( # test_complex_line_plots(single_panel=True, mag_and_phase_format=True)) # widgets.append( # test_complex_images()) # widgets.append( # test_complex_images(mag_and_phase_format=True)) dgs = [] for w in widgets: dgs.append(widgetDialog(w)) dgs[-1].show() return app.exec_()
def xySelection(interactive=False): if not interactive: app = QtGui.QApplication([]) fc = linearFlowchart(('xysel', XYSelector)) selector = fc.nodes()['xysel'] dialog = widgetDialog(selector.ui, 'xysel') data = datadict_to_meshgrid(testdata.three_compatible_3d_sets(4, 4, 4)) fc.setInput(dataIn=data) if not interactive: app.exec_() else: return dialog, fc
def dimReduction(interactive=False): if not interactive: app = QtGui.QApplication([]) fc = linearFlowchart(('reducer', DimensionReducer)) reducer = fc.nodes()['reducer'] dialog = widgetDialog(reducer.ui, 'reducer') data = datadict_to_meshgrid(testdata.three_compatible_3d_sets(2, 2, 2)) fc.setInput(dataIn=data) if not interactive: app.exec_() else: return dialog, fc
def test_dataSelectionWidget(readonly: bool = False): def selectionCb(selection): print(selection) # app = QtWidgets.QApplication([]) widget = DataSelectionWidget(readonly=readonly) widget.dataSelectionMade.connect(selectionCb) # set up the UI, feed data in data = testdata.three_incompatible_3d_sets(5, 5, 5) dialog = widgetDialog(widget) widget.setData(data.structure(), data.shapes()) widget.clear() widget.setData(data.structure(), data.shapes()) return dialog
def xySelectionWidget(): def selectionCb(selection): print(selection) app = QtGui.QApplication([]) widget = XYSelectionWidget() widget.rolesChanged.connect(selectionCb) # set up the UI, feed data in data = datadict_to_meshgrid(testdata.three_compatible_3d_sets(5, 5, 5)) dialog = widgetDialog(widget) widget.setData(data) widget.clear() widget.setData(data) return app.exec_()
def dataSelectionWidget(readonly=False): def selectionCb(selection): print(selection) app = QtGui.QApplication([]) widget = DataSelectionWidget(readonly=readonly) widget.dataSelectionMade.connect(selectionCb) # set up the UI, feed data in data = testdata.three_incompatible_3d_sets(5, 5, 5) dialog = widgetDialog(widget) widget.setData(data) widget.clear() widget.setData(data) return app.exec_()
def loader_node(interactive=False): def cb(*vals): print(vals) if not interactive: app = QtWidgets.QApplication([]) fc = linearFlowchart(('loader', dds.DDH5Loader)) loader = fc.nodes()['loader'] dialog = widgetDialog(loader.ui, 'loader') if not interactive: loader.newDataStructure.connect(cb) app.exec_() else: return dialog, fc
def main(multi=False): def cb(value): print('Selection made:', value) data = str2dd("data1(x,y,z); data2(x,z);") if not multi: w = DimensionSelector() combo = w.combo combo.setDimensions(data.axes() + data.dependents()) combo.dimensionSelected.connect(cb) else: w = MultiDimensionSelector() w.setDimensions(data.axes() + data.dependents()) w.dimensionSelectionMade.connect(cb) return widgetDialog(w)
def gridOptionWidget(): def cb(val): print(val) app = QtGui.QApplication([]) widget = GridOptionWidget() widget.optionSelected.connect(cb) # set up the UI, feed data in data = datadict_to_meshgrid( testdata.three_compatible_3d_sets(5, 5, 5) ) dialog = widgetDialog(widget) widget.setAxes(data.axes()) widget.setShape(data.shape()) return app.exec_()
def test_data_selector(): fc = linearFlowchart(('selector', DataSelector)) selector = fc.nodes()['selector'] dialog = widgetDialog(selector.ui, title='selector') data = testdata.three_incompatible_3d_sets(2, 2, 2) fc.setInput(dataIn=data) selector.selectedData = ['data'] # for testing purposes, insert differently structured data data2 = testdata.two_compatible_noisy_2d_sets() fc.setInput(dataIn=data2) # ... and go back. fc.setInput(dataIn=data) selector.selectedData = ['data'] return dialog, fc
def test_gridOptionWidget(): def cb(val): print(val) widget = GridOptionWidget() widget.optionSelected.connect(cb) # set up the UI, feed data in data = datadict_to_meshgrid(testdata.three_compatible_3d_sets(5, 5, 5)) dialog = widgetDialog(widget) widget.setAxes(data.axes()) widget.setShape({ 'order': ['x', 'y', 'z'], 'shape': (5, 5, 5), }) return dialog
def gridder(interactive=False): def cb(val): print(val) if not interactive: app = QtGui.QApplication([]) fc = linearFlowchart(('grid', DataGridder)) gridder = fc.nodes()['grid'] dialog = widgetDialog(gridder.ui, 'gridder') data = testdata.three_compatible_3d_sets(2, 2, 2) fc.setInput(dataIn=data) if not interactive: gridder.shapeDetermined.connect(cb) app.exec_() else: return dialog, fc
def test_GridNode(): def cb(val): print(val) fc = linearFlowchart(('grid', DataGridder)) gridder = fc.nodes()['grid'] dialog = widgetDialog(gridder.ui, 'gridder') data = testdata.three_compatible_3d_sets(2, 2, 2) fc.setInput(dataIn=data) gridder.shapeDetermined.connect(cb) gridder.grid = GridOption.guessShape, {} gridder.grid = GridOption.specifyShape, \ dict(order=['x', 'y', 'z'], shape=(2,2,3)) gridder.grid = GridOption.guessShape, {} gridder.grid = GridOption.specifyShape, \ dict(order=['x', 'y', 'z'], shape=(2,2,3)) return dialog, fc
def test_shapeSpecWidget(): def cb(val): print(val) widget = ShapeSpecificationWidget() widget.newShapeNotification.connect(cb) # set up the UI, feed data in dialog = widgetDialog(widget) widget.setAxes(['x', 'y', 'aVeryVeryVeryVeryLongAxisName']) widget.setShape({ 'order': ['x', 'y', 'aVeryVeryVeryVeryLongAxisName'], 'shape': (5, 5, 5), }) widget.setShape({ 'order': ['y', 'x', 'aVeryVeryVeryVeryLongAxisName'], 'shape': (11, 4, -9), }) return dialog
def test_data_selector(interactive=True): if not interactive: app = QtGui.QApplication([]) fc = linearFlowchart(('selector', DataSelector)) selector = fc.nodes()['selector'] dialog = widgetDialog(selector.ui, 'selector') data = testdata.three_incompatible_3d_sets(2, 2, 2) fc.setInput(dataIn=data) selector.selectedData = ['data'] # for testing purposes, insert differently structured data data2 = testdata.two_compatible_noisy_2d_sets() fc.setInput(dataIn=data2) # ... and go back. fc.setInput(dataIn=data) selector.selectedData = ['data'] if not interactive: app.exec_() else: return dialog, fc
def image_test(): app = QtWidgets.QApplication([]) # create data x = np.linspace(0, 10, 51) y = np.linspace(-4, 4, 51) xx, yy = np.meshgrid(x, y, indexing='ij') zz = np.cos(xx)*np.exp(-(yy-1.)**2) # layout widget pgWidget = pg.GraphicsLayoutWidget() # main plot imgPlot = pgWidget.addPlot(title='my image', row=0, col=0) img = pg.ImageItem() imgPlot.addItem(img) # histogram and colorbar hist = pg.HistogramLUTItem() hist.setImageItem(img) pgWidget.addItem(hist) hist.gradient.loadPreset('viridis') # cut elements pgWidget2 = pg.GraphicsLayoutWidget() # plots for x and y cuts xplot = pgWidget2.addPlot(row=1, col=0) yplot = pgWidget2.addPlot(row=0, col=0) xplot.addLegend() yplot.addLegend() # add crosshair to main plot vline = pg.InfiniteLine(angle=90, movable=False, pen='r') hline = pg.InfiniteLine(angle=0, movable=False, pen='b') imgPlot.addItem(vline, ignoreBounds=True) imgPlot.addItem(hline, ignoreBounds=True) def crossMoved(event): pos = event[0].scenePos() if imgPlot.sceneBoundingRect().contains(pos): origin = imgPlot.vb.mapSceneToView(pos) vline.setPos(origin.x()) hline.setPos(origin.y()) vidx = np.argmin(np.abs(origin.x()-x)) hidx = np.argmin(np.abs(origin.y()-y)) yplot.clear() yplot.plot(zz[vidx, :], y, name='vertical cut', pen=pg.mkPen('r', width=2), symbol='o', symbolBrush='r', symbolPen=None) xplot.clear() xplot.plot(x, zz[:, hidx], name='horizontal cut', pen=pg.mkPen('b', width=2), symbol='o', symbolBrush='b', symbolPen=None) proxy = pg.SignalProxy(imgPlot.scene().sigMouseClicked, slot=crossMoved) dg = widgetDialog(pgWidget, title='pyqtgraph image test') dg2 = widgetDialog(pgWidget2, title='line cuts') # setting the data img.setImage(zz) img.setRect(QtCore.QRectF(0, -4, 10, 8.)) hist.setLevels(zz.min(), zz.max()) # formatting imgPlot.setLabel('left', "Y", units='T') imgPlot.setLabel('bottom', "X", units='A') xplot.setLabel('left', 'Z') xplot.setLabel('bottom', "X", units='A') yplot.setLabel('left', "Y", units='T') yplot.setLabel('bottom', "Z") if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): QtWidgets.QApplication.instance().exec_()