def updateSB(self): try: self.scale.scene().removeItem(self.scale) except: pass try: self.vscale.scene().removeItem(self.vscale) except: pass if self.scalebar: vb = self.p8.getViewBox() xsize = vb.viewRange()[0][1] - vb.viewRange()[0][0] ysize = vb.viewRange()[1][1] - vb.viewRange()[1][0] if self.scalebartype == 0: self.scale = pg.ScaleBar(size=round_to_1(xsize / 10.0), suffix=self.xlabel) self.scale.setParentItem(vb) self.scale.anchor((0, 1), (1, 1), offset=(-20, -10)) self.scale.text.setText(pg.functions.siFormat( round_to_1(xsize / 10.0), suffix=self.xlabel), color=(0, 0, 0)) if self.scalebartype == 0 or self.scalebartype == 1: self.vscale = verticalScaleBar(size=round_to_1(ysize / 5.0), suffix=self.ylabel) self.vscale.setParentItem(vb) self.vscale.anchor((0, 1), (1, 1), offset=(-20, -5))
def plot_intensity_sums(self): try: self.hist_data = np.reshape( self.hist_data, newshape=(self.hist_data.shape[0], self.numb_x_pixels * self.numb_y_pixels)) self.intensity_sums = np.sum( self.hist_data, axis=0) #sum intensities for each pixel self.intensity_sums = np.reshape(self.intensity_sums, newshape=(self.numb_x_pixels, self.numb_y_pixels)) self.ui.intensity_sums_viewBox.view.invertY( False) # stop y axis invert self.ui.intensity_sums_viewBox.setImage(self.intensity_sums, scale=(self.x_step_size, self.y_step_size)) self.ui.intensity_sums_viewBox.roi.setSize( [self.x_scan_size, self.y_step_size]) #line roi scale = pg.ScaleBar(size=1, suffix='um') scale.setParentItem(self.ui.intensity_sums_viewBox.view) scale.anchor((1, 1), (1, 1), offset=(-30, -30)) self.ui.intensity_sums_viewBox.view.sigRangeChanged.connect( lambda: updateDelay(scale, 10)) except Exception as err: print(format(err))
def plot_raw_scan(self): try: self.hist_image = np.reshape(self.hist_data, newshape=(self.hist_data.shape[0], self.numb_x_pixels, self.numb_y_pixels)) self.times = self.time_data[:, 0, 0] * 1e-3 self.ui.raw_hist_data_viewBox.view.invertY( False) # stops y-axis invert self.ui.raw_hist_data_viewBox.setImage(self.hist_image, scale=(self.x_step_size, self.y_step_size), xvals=self.times) self.ui.raw_hist_data_viewBox.roi.setSize( [self.x_scan_size, self.y_scan_size]) # if self.ui.compare_checkBox.isChecked(): # self.ui.imv2.setImage(self.hist_image, scale= (data['Scan Parameters']['X step size (um)'], # data['Scan Parameters']['Y step size (um)']), xvals=self.times) self.switch_compare() self.ui.raw_hist_data_viewBox.ui.roiBtn.clicked.connect( self.switch_compare) scale = pg.ScaleBar(size=1, suffix='um') scale.setParentItem(self.ui.raw_hist_data_viewBox.view) scale.anchor((1, 1), (1, 1), offset=(-30, -30)) self.ui.raw_hist_data_viewBox.view.sigRangeChanged.connect( lambda: updateDelay(scale, 10)) except Exception as err: print(format(err))
def scalebar(self): ''' Not working ''' self.scale_bar = pg.ScaleBar( 10, width=5, suffix='m') self.scale_bar.setParentItem(self.plotItem) self.scale_bar.anchor((1, 1), (1, 1), offset=(-20, -20))
def plot_fit_scan(self): try: if self.ui.use_raw_scan_settings.isChecked(): num_x = self.numb_x_pixels num_y = self.numb_y_pixels else: num_x = self.ui.num_x_spinBox.value() num_y = self.ui.num_y_spinBox.value() numb_of_points = num_x * num_y #75*75 fwhm = np.zeros(shape=(numb_of_points, 1)) pk_pos = np.zeros(shape=(numb_of_points, 1)) # pk_pos_plus = np.zeros(shape=(numb_of_points,1)) # pk_pos_minus = np.zeros(shape=(numb_of_points,1)) sigma = np.zeros(shape=(numb_of_points, 1)) height = np.zeros(shape=(numb_of_points, 1)) for i in range(numb_of_points): fwhm[i, 0] = self.fit_scan_file['result_' + str(i)].values['g1_fwhm'] pk_pos[i, 0] = self.fit_scan_file['result_' + str(i)].values['g1_center'] sigma[i, 0] = self.fit_scan_file['result_' + str(i)].values['g1_sigma'] height[i, 0] = self.fit_scan_file['result_' + str(i)].values['g1_height'] newshape = (num_x, num_y) param_selection = str(self.ui.comboBox.currentText()) self.img = np.reshape(eval(param_selection), newshape) if self.ui.use_raw_scan_settings.isChecked(): self.ui.fit_scan_viewbox.setImage(self.img, scale=(self.x_step_size, self.y_step_size)) scale = pg.ScaleBar(size=2, suffix='um') scale.setParentItem(self.ui.fit_scan_viewbox.view) scale.anchor((1, 1), (1, 1), offset=(-30, -30)) self.ui.fit_scan_viewbox.view.sigRangeChanged.connect( lambda: updateDelay(scale, 10)) else: self.ui.fit_scan_viewbox.setImage(self.img) self.ui.fit_scan_viewbox.view.invertY(False) except Exception as e: self.ui.result_textBrowser2.append(str(e)) pass
def __init__(self, parent=None, scalebar=True, useViewBox=False): pg.setConfigOptions(antialias=True) pg.setConfigOption('background', 'w') pg.setConfigOption('foreground', 'k') pg.GraphicsWindow.__init__(self) self.useViewBox = useViewBox #win = pg.GraphicsWindow(title="Basic plotting examples") # self.view = pg.PlotWidget(self) # self.view = pg.widgets.RemoteGraphicsView.RemoteGraphicsView() #self.view.pg.setConfigOptions(antialias=True) ## prettier plots at no cost to the main process! # self.view.setWindowTitle('pyqtgraph example: RemoteSpeedTest') self.resize(800, 350) #win.setWindowTitle('pyqtgraph example: Plotting') # Enable antialiasing for prettier plots self.scalebar = scalebar self.scalebartype = 0 # self.setCentralWidget(self.view) # self.curve = self.view.plot() self.curve = [] self.p8 = self.addPlot(title="Region Selection") pl8 = self.p8.plot() #data2, pen=(255,255,255,200)) if self.useViewBox: self.nextRow() self.p9 = self.addPlot(title="Zoom on selected region") pl9 = self.p9.plot() vb = self.p8.getViewBox() xsize = vb.viewRange()[0][1] - vb.viewRange()[0][0] ysize = vb.viewRange()[1][1] - vb.viewRange()[1][0] self.scale = pg.ScaleBar(size=round_to_1(xsize / 10.0), suffix='s') self.scale.setParentItem(vb) self.scale.anchor((0, 1), (1, 1), offset=(-20, -10)) self.vscale = verticalScaleBar(size=round_to_1(ysize / 5.0), suffix='s') self.vscale.setParentItem(vb) self.vscale.anchor((0, 1), (1, 1), offset=(-20, -10)) self.xlabel = '' self.ylabel = '' self.marker = pg.InfiniteLine(pos=0, pen=(0, 0, 0), movable=True) self.markerpos = 0 self.p8.addItem(self.marker) self.p8.sigXRangeChanged.connect(self.updateSB) self.updateSB() self.show()
def plot_intensity_sums(self): try: # TODO test line scan plots #intensities = np.reshape(intensities, newshape=(2048, numb_pixels_X*numb_pixels_Y)) sums = np.sum(self.intensities, axis=-1) sums = np.reshape(sums, newshape=(self.numb_x_pixels, self.numb_y_pixels)) self.ui.intensity_sums_viewBox.setImage(sums, scale=(self.x_step_size, self.y_step_size)) self.ui.intensity_sums_viewBox.view.invertY(False) scale = pg.ScaleBar(size=2, suffix='um') scale.setParentItem(self.ui.intensity_sums_viewBox.view) scale.anchor((1, 1), (1, 1), offset=(-30, -30)) self.ui.intensity_sums_viewbox.view.sigRangeChanged.connect( lambda: updateDelay(scale, 10)) except Exception as e: self.ui.result_textBrowser2.append(str(e))
def plot_raw_scan(self): try: # TODO test line scan plots intensities = self.intensities.T #this is only there because of how we are saving the data in the app intensities = np.reshape(intensities, newshape=(2048, self.numb_x_pixels, self.numb_y_pixels)) self.ui.raw_scan_viewbox.setImage(intensities, scale=(self.x_step_size, self.y_step_size), xvals=self.wavelengths) #roi_plot = self.ui.raw_scan_viewBox.getRoiPlot() #roi_plot.plot(data['Wavelengths'], intensities) self.ui.raw_scan_viewbox.view.invertY(False) scale = pg.ScaleBar(size=2, suffix='um') scale.setParentItem(self.ui.raw_scan_viewbox.view) scale.anchor((1, 1), (1, 1), offset=(-30, -30)) self.ui.raw_scan_viewbox.view.sigRangeChanged.connect( lambda: updateDelay(scale, 10)) except Exception as e: self.ui.result_textBrowser2.append(str(e))
# symbolSize=8, symbolBrush=color, symbolPeb='w') # feature2_plot[3, 0].setLabels(left=['amplitude', 'V'], bottom=['rise time', 's']) feature3_plot[0, 0].plot(grand_response[type[0]]['latency'], grand_response[type[0]]['amp'], pen=None, symbol='o', symbolSize=8, symbolBrush=color, symbolPen='w') feature3_plot[0, 0].setLabels(left=['Amp', 'V'], bottom=['Latency', 's']) feature3_plot[0, 1].plot(grand_response[type[0]]['CV'], grand_response[type[0]]['amp'], pen=None, symbol='o', symbolSize=8, symbolBrush=color, symbolPen='w') feature3_plot[0, 1].setLabels(left=['Amp', 'V'], bottom=['CV', '']) feature3_plot[0, 2].plot(grand_response[type[0]]['CV'], grand_response[type[0]]['latency'], pen=None, symbol='o', symbolSize=8, symbolBrush=color, symbolPen='w') feature3_plot[0, 2].setLabels(left=['Latency', 's'], bottom=['CV', '']) amp_plot.plot(grand_response[type[0]]['amp'], grand_response[type[0]]['amp_measured'], pen=None, symbol='o', symbolSize=10, symbolBrush=color, symbolPen='w') amp_plot.setLabels(left=['Measured Amp', 'V'], bottom=['Fit Amp','V']) if c == len(connection_types) - 1: x_scale = pg.ScaleBar(size=10e-3, suffix='s') x_scale.setParentItem(synapse_plot[c, 0].vb) x_scale.anchor(scale_anchor, scale_anchor, offset=scale_offset) amp_list = feature_anova('amp', grand_response) feature_kw('amp', grand_response) feature_kw('latency', grand_response) feature_kw('rise', grand_response) feature_kw('CV', grand_response) latency_list = feature_anova('latency', grand_response) rise_list = feature_anova('rise', grand_response) decay_list = feature_anova('decay', grand_response) # if args['organism'] == 'human': # t, p = stats.ks_2samp(grand_response[('3', 'unknown')]['amp'], grand_response[('5', 'unknown')]['amp']) # print ('KS: Amp = %f' % p) # t, p = stats.ks_2samp(grand_response[('3', 'unknown')]['latency'],
""" Demonstrates ScaleBar """ import initExample ## Add path to library (just for examples; you do not need this) import pyqtgraph as pg from pyqtgraph.Qt import QtCore, QtGui, QtWidgets import numpy as np pg.mkQApp() win = pg.GraphicsWindow() win.setWindowTitle('pyqtgraph example: ScaleBar') vb = win.addViewBox() vb.setAspectLocked() img = pg.ImageItem() img.setImage(np.random.normal(size=(100, 100))) img.setScale(0.01) vb.addItem(img) scale = pg.ScaleBar(size=0.1) scale.setParentItem(vb) scale.anchor((1, 1), (1, 1), offset=(-20, -20)) ## Start Qt event loop unless running in interactive mode or using pyside. if __name__ == '__main__': import sys if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): QtWidgets.QApplication.instance().exec_()