def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_main_window() self.ui.setupUi(self) # Application variables self.model = ListModel() self.well_dataframes_dict = {} self.decline_curves_dict = {} self.model_oil_curves = ListModel() self.model_gas_curves = ListModel() # Cashflow models self.model_cashflow_monthly = TableModel() self.model_cashflow_annual = TableModel() self.model_cashflow_summary = TableModel() # Production Plot setup self.widget_production_plot = DynamicMplCanvas( self.ui.widgetProductionPlot) toolbar = NavigationToolbar2QT(self.widget_production_plot, self.ui.widgetProductionPlot) layout = QtWidgets.QVBoxLayout() layout.addWidget(toolbar) layout.addWidget(self.widget_production_plot) self.ui.widgetProductionPlot.setLayout(layout) self.ui.comboBoxPhase.addItems(["Oil", "Gas"]) self.ui.comboBoxUnits.addItems(["BOPM/MCFPM", "BOPD/MCFPD"])
def __init__(self, **kwargs: Any): BaseWidget.__init__(self, **kwargs) self.setupUi(self) # variables self.new_data = False self.data_filename: Optional[str] = None self.data: Optional[fits.HDUList] = None # before first update, disable mys self.setEnabled(False) # add image panel self.imageLayout = QtWidgets.QVBoxLayout(self.tabImage) if isinstance(self.module, IImageGrabber): self.imageView = QFitsWidget() self.imageLayout.addWidget(self.imageView) elif isinstance(self.module, ISpectrograph): self.figure, self.ax = plt.subplots() self.canvas = FigureCanvas(self.figure) self.plotTools = NavigationToolbar2QT(self.canvas, self.tabImage) self.imageLayout.addWidget(self.plotTools) self.imageLayout.addWidget(self.canvas) else: raise ValueError("Unknown type") # set headers for fits header tab self.tableFitsHeader.setColumnCount(3) self.tableFitsHeader.setHorizontalHeaderLabels( ["Key", "Value", "Comment"]) # connect signals self.signal_update_gui.connect(self.update_gui) self.checkAutoSave.stateChanged.connect( lambda x: self.textAutoSavePath.setEnabled(x))
def __init__(self, parent): self.canvas = parent.central_widget.canvas # Set up virtual Matplotlib navigation toolbar (don't show it) self._mpl_nav = NavigationToolbar2QT(self.canvas, parent) self._mpl_nav.hide() BasicToolbar.__init__(self, parent)
def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.canvas = MplCanvas() self.toolbar = NavigationToolbar2QT(self.canvas, self) self.vbl = QtWidgets.QVBoxLayout() self.vbl.addWidget(self.canvas) self.vbl.addWidget(self.toolbar) self.setLayout(self.vbl) self.canvas.fig.canvas.mpl_connect('button_press_event', self.onclick)
def initMainCanvas(self): self.figure = plt.figure() self.canvas = FigureCanvas(self.figure) self.toolbar = NavigationToolbar2QT(self.canvas, self) self.toolbar.setVisible(False) FigureCanvas.setSizePolicy(self.canvas, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) FigureCanvas.updateGeometry(self.canvas) self.canvas.hide() self.ui.verticalLayout.addWidget(self.canvas)
def __init__(self, viewer): self.canvas = viewer.central_widget.canvas # Set up virtual Matplotlib navigation toolbar (don't show it) self._mpl_nav = NavigationToolbar2QT(self.canvas, viewer) self._mpl_nav.hide() BasicToolbar.__init__(self, viewer) viewer.window_closed.connect(self.close)
def getGraph(self): matplotlib.use('Qt5Agg') sc = MplCanvas(self, width=5, height=5, dpi=100) sc.axes.plot(list(self.data.keys()), list(self.data.values())) sc.axes.set_xlabel(self.algorithm.value_name.capitalize() + ' (numpy.' + self.algorithm.algorithm + ')') sc.axes.set_ylabel('Test results') sc.axes.set_title(self.name + ' | ' + self.test_time) toolbar = NavigationToolbar2QT(sc, self) sc.fig.tight_layout() return toolbar, sc
def show_result_img(self, signal): # 移除旧的画布 try: self.imageshow.removeWidget(self.plot_figure) self.imageshow.removeWidget(self.tool) except: self.imageshow.removeWidget(self.photoview) finally: pass self.t1_t5() if signal == 0: self.rawimg.setDisabled(True) elif signal == 1: self.t1.setDisabled(True) elif signal == 2: self.t2.setDisabled(True) elif signal == 3: self.t3.setDisabled(True) elif signal == 4: self.t4.setDisabled(True) else: self.t5.setDisabled(True) self.plot_figure = ImageView(width=8, height=8, dpi=110) self.tool = NavigationToolbar2QT(self.plot_figure, self) image = plt.imread(BASE + "/data/" + str(signal) + ".png") self.id.setText("631d342a4") self.length.setText(str(image.shape[1])) self.width.setText(str(image.shape[0])) plt.imshow(image) self.imageshow.addWidget(self.plot_figure) self.imageshow.addWidget(self.tool) # 显示大标题 name_list = [ "any", "epidural", "intraparenchymal", "intraventricular", "subarachnoid", "subdural", ] if signal == 1: title = f"{name_list[signal]} - NO" else: title = f"{name_list[signal]} - YES" self.plot_figure.fig.suptitle(title)
def initMainCanvas(self): self.figure = plt.figure() self.canvas = FigureCanvas(self.figure) self.toolbar = NavigationToolbar2QT(self.canvas, self) FigureCanvas.setSizePolicy(self.canvas, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) FigureCanvas.updateGeometry(self.canvas) self.axes = self.figure.subplots(2, 1, sharex=True) self.figure.subplots_adjust(hspace=0) self.v_layout.addWidget(self.canvas) self.v_layout.addWidget(self.toolbar)
def initMainCanvas(self): self.figure = plt.figure() self.canvas = FigureCanvas(self.figure) self.toolbar = NavigationToolbar2QT(self.canvas, self) self.toolbar.hide() FigureCanvas.setSizePolicy(self.canvas, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) FigureCanvas.updateGeometry(self.canvas) self.axs = self.figure.subplots(2, 1) self.v_layout.addWidget(self.canvas)
def __init__(self): super().__init__() self.setWindowTitle('QtXRD') self.setWindowIcon(QIcon('assets/bird.png')) self.statusBar() self.createActions() self.mainView = MainView(self) self.settings = XrdSetting() self.setCentralWidget(self.mainView) self.createMenuBar() self.addToolBar(Qt.TopToolBarArea, NavigationToolbar2QT(self.mainView.figure_view, self)) self.resize(1500, 800)
def __init__(self, canvas, num): super().__init__(canvas, num) self.mw = FreeCADGui.getMainWindow() self.mdi = self.mw.findChild(QtWidgets.QMdiArea) self.widget = PlotWidget(self) self.widget.setLayout(QtWidgets.QHBoxLayout()) self.mdi.addSubWindow(self.widget) self.widget.layout().addWidget(self.canvas) self.widget.show() FigureManager.all_widgets.append(self.widget) self.toolbar = NavigationToolbar2QT(self.canvas, self.widget, False) self.toolbar.setOrientation(QtCore.Qt.Vertical) self.widget.layout().addWidget(self.toolbar) self.canvas.set_widget_name = self.set_widget_name
def _create_canvas(self, parent): """ Create the MPL canvas. """ # matplotlib commands to create a canvas frame = QtGui.QWidget() mpl_canvas = FigureCanvas(self.value) mpl_canvas.setParent(frame) vbox = QtGui.QVBoxLayout() if self.toolbar: mpl_toolbar = NavigationToolbar2QT(mpl_canvas, frame) vbox.addWidget(mpl_toolbar) vbox.addWidget(mpl_canvas) frame.setLayout(vbox) return frame
def start_analysis(self): # 移除旧的画布 try: self.imageshow.removeWidget(self.plot_figure) self.imageshow.removeWidget(self.tool) except: self.imageshow.removeWidget(self.photoview) finally: pass filename = self.imgfile.currentText() filepath = os.path.join(self.fold, filename) self.filepath = filepath self.plot_figure = ImageView(width=8, height=8, dpi=110) self.tool = NavigationToolbar2QT(self.plot_figure, self) if filepath[-3:] == "dcm": # 读取dicom文件 _slice = pydicom.read_file(filepath) # 设置id, 长, 宽 self.id.setText(_slice.PatientID) self.length.setText(str(_slice.pixel_array.shape[1])) self.width.setText(str(_slice.pixel_array.shape[0])) # 获取dicom数据,绘图 image = np.stack(_slice.pixel_array) image = image.astype(np.int16) image = np.array(image) else: image = plt.imread(filepath) self.id.setText(" ") self.length.setText(str(image.shape[1])) self.width.setText(str(image.shape[0])) plt.imshow(image, cmap=plt.cm.gray) self.imageshow.addWidget(self.plot_figure) self.imageshow.addWidget(self.tool) _img = filepath.split("/")[-1] # 显示大标题 self.plot_figure.fig.suptitle(_img) self.console.append(f"Start Precessing image:{_img}") self.t1_t5()
def __init__(self): super().__init__() self.setWindowTitle("Moulder") self.setWindowIcon(QIcon.fromTheme('python-logo')) self.setGeometry(200, 200, 1024, 700) self.init_ui() widget = QWidget() layout = QVBoxLayout() self.moulder = Moulder(self, numpy.linspace(0, 100e3, 101), numpy.zeros(101), 0, 10000, density_range=DENSITY_RANGE, width=5, height=4, dpi=100) self.moulder.setFocusPolicy(Qt.StrongFocus) self.navigation_bar = NavigationToolbar2QT(self.moulder, widget) layout.addWidget(self.moulder) layout.addWidget(self.navigation_bar) widget.setLayout(layout) self.setCentralWidget(widget) self.set_callbacks()
def __init__(self, parent): super(QWidget, self).__init__(parent) self.layout = QVBoxLayout(self) self.tabs = QTabWidget() self.tab1 = QWidget() self.tab2 = QWidget() self.tab3 = QWidget() self.tabs.addTab(self.tab1, "Numerical Methods") self.tabs.addTab(self.tab2, "Local Error") self.tabs.addTab(self.tab3, "Global Error") self.tab1.layout = QVBoxLayout() self.graph = PlotCanvas(self) self.toolbar = NavigationToolbar2QT(self.graph, self) self.tab1.layout.addWidget(self.toolbar) self.tab1.layout.addWidget(self.graph) self.tab1.setLayout(self.tab1.layout) self.layout.addWidget(self.tabs) self.setLayout(self.layout)
def waveform_splicing_btn_func(self): aData = int(self.a_wave_starting_point.text()) bData = int(self.b_wave_starting_point.text()) self.chart_a, self.chart_b = self.plant.cheak_ab(a=aData, b=bData) ss = self.plant.merge_ab(a=aData, b=bData) basline = self.plant.baseline(ss) self.plant.save_ab(self.new_file_name_edit.text(), basline) self.chartWidget = QWidget() self.chartLayout = QVBoxLayout(self.chartWidget) self.chartCanvas = MyFigureCanvas() self.chartNavigationToolbar = NavigationToolbar2QT(self.chartCanvas, self.chartWidget) self.chartLayout.addWidget(self.chartNavigationToolbar) self.chartLayout.addWidget(self.chartCanvas) ax1 = self.chartCanvas.figure.add_subplot(211) self.chart_a.plot(ax=ax1) ax2 = self.chartCanvas.figure.add_subplot(212) self.chart_b.plot(ax=ax2) self.chartWidget.show()
def __init__(self, parentRoiPlot: RoiPlot, parent: QWidget = None): super().__init__(parent=parent) self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.WindowMinMaxButtonsHint) # self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.WindowTitleHint | QtCore.Qt.CustomizeWindowHint) # Get rid of the close button. this is handled by the selector widget active status self.setWindowTitle("Sin City Image Export") self.setModal(False) self.parentRoiPlot = parentRoiPlot self.cachedImage = None self.fig, self.ax = matplotlib.pyplot.subplots() c = FigureCanvasQTAgg(self.fig) self.plotWidg = QWidget(self) self.plotWidg.setLayout(QVBoxLayout()) self.plotWidg.layout().addWidget(c) self.plotWidg.layout().addWidget(NavigationToolbar2QT(c, self)) self.ax.xaxis.set_visible(False) self.ax.yaxis.set_visible(False) self.im = self.ax.imshow(self.parentRoiPlot.getImageData()) self._paintDebounce = QtCore.QTimer( ) # This timer prevents the selectionChanged signal from firing too rapidly. self._paintDebounce.setInterval(200) self._paintDebounce.setSingleShot(True) self._paintDebounce.timeout.connect(self.paint) self.vmin = QDoubleSpinBox(self) self.vmin.setValue(0) self.vmin.setDecimals(3) self.vmin.setMaximum(10000) self.vmin.setSingleStep(0.001) def vminChanged(val): self.stale = True self._paintDebounce.start() self.vmin.valueChanged.connect(vminChanged) self.vmax = QDoubleSpinBox(self) self.vmax.setValue(.1) self.vmax.setDecimals(3) self.vmax.setMaximum(10000) self.vmax.setSingleStep(0.001) def vmaxChanged(val): self.stale = True self._paintDebounce.start() self.vmax.valueChanged.connect(vmaxChanged) self.scaleBg = QDoubleSpinBox(self) self.scaleBg.setValue(.33) self.scaleBg.setMinimum(0) self.scaleBg.setDecimals(2) self.scaleBg.setMaximum(3) self.scaleBg.setSingleStep(0.01) def scaleBgChanged(val): self.stale = True self._paintDebounce.start() self.scaleBg.valueChanged.connect(scaleBgChanged) self.hue = QDoubleSpinBox(self) self.hue.setMinimum(0) self.hue.setMaximum(1) self.hue.setValue(0) self.hue.setSingleStep(0.05) def hueRangeChanged(val): self.stale = True self._paintDebounce.start() self.hue.valueChanged.connect(hueRangeChanged) self.exp = QDoubleSpinBox(self) self.exp.setMinimum(0.5) self.exp.setMaximum(3) self.exp.setValue(1) self.exp.setSingleStep(0.05) def expRangeChanged(val): self.stale = True self._paintDebounce.start() self.exp.valueChanged.connect(expRangeChanged) self.scaleBar = QSpinBox(self) self.scaleBar.setValue(0) self.scaleBar.setMaximum(10000) def scaleBarChanged(val): self.stale = True self._paintDebounce.start() self.scaleBar.valueChanged.connect(scaleBarChanged) self.refreshButton = QPushButton("Refresh", self) def refreshAction(): self.stale = True # Force a full refresh self.paint() self.refreshButton.released.connect(refreshAction) l = QGridLayout() l.addWidget(QLabel("Minimum Value", self), 0, 0) l.addWidget(self.vmin, 0, 1) l.addWidget(QLabel("Maximum Value", self), 1, 0) l.addWidget(self.vmax, 1, 1) l.addWidget(QLabel("Scale Background", self), 2, 0) l.addWidget(self.scaleBg, 2, 1) l.addWidget(QLabel("Hue", self), 3, 0) l.addWidget(self.hue, 3, 1) l.addWidget(QLabel("Exponent", self), 4, 0) l.addWidget(self.exp, 4, 1) l.addWidget(QLabel("Scale Bar", self), 5, 0) l.addWidget(self.scaleBar, 5, 1) l.addWidget(self.refreshButton, 6, 0) layout = QHBoxLayout() layout.addLayout(l) layout.addWidget(self.plotWidg) self.setLayout(layout) self.stale = True self.paint()
def init_navi_toolbar(self): self.navi_toolbar = NavigationToolbar2QT(self.canvas, self) self.navi_toolbar.setStyleSheet('border: none') self.navi_toolbar.setMaximumHeight(20)
def _ensure_mpl_nav(viewer): # Set up virtual Matplotlib navigation toolbar (don't show it) if not hasattr(viewer, '_mpl_nav'): viewer._mpl_nav = NavigationToolbar2QT(viewer.central_widget.canvas, viewer) viewer._mpl_nav.hide()
def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.manual_insert.move(500, 60) self.manual_insert.resize(140, 85) self.manual_insert_x_label.setText('x:') self.manual_insert_x_label.move(10, 20) self.manual_insert_x.placeholderText = 'Podaj wartość x' self.manual_insert_x.setToolTip( 'Punkt, który dodasz będzie miał następującą współrzędną y') self.manual_insert_x.move(20, 20) self.manual_insert_x.resize(100, 16) self.manual_insert_y_label = QLabel(self.manual_insert) self.manual_insert_y_label.setText('y:') self.manual_insert_y_label.move(10, 40) self.manual_insert_y.placeholderText = 'Podaj wartość y' self.manual_insert_y.setToolTip( 'Punkt, który dodasz będzie miał następującą współrzędną y') self.manual_insert_y.move(20, 40) self.manual_insert_y.resize(100, 16) self.manual_insert_button.setText('Dodaj punkt') self.manual_insert_button.move(40, 60) self.manual_insert_button.resize(81, 24) self.manual_insert_button.clicked.connect(self.min_button_clicked) self.refresh_plot() self.addToolBar(NavigationToolbar2QT(self.plot, self)) self.interp_box1.move(500, 145) self.interp_box1.resize(140, 50) self.interp_combo1.addItems([ 'Brak', 'Liniowa', 'Kwadratowa', 'Wielomianowa (10)', 'Wielomianowa', 'Logarytmiczna', 'Wykładnicza' ]) self.interp_combo1.move(10, 20) self.interp_combo1.resize(120, 20) self.interp_combo1.activated[int].connect(self.interp_combo_activated1) self.interp_box2.move(500, 195) self.interp_box2.resize(140, 50) self.interp_combo2.addItems([ 'Brak', 'Liniowa', 'Kwadratowa', 'Wielomianowa (10)', 'Wielomianowa', 'Logarytmiczna', 'Wykładnicza' ]) self.interp_combo2.move(10, 20) self.interp_combo2.resize(120, 20) self.interp_combo2.activated[int].connect(self.interp_combo_activated2) self.select_point_box.move(500, 245) self.select_point_box.resize(140, 50) self.select_point_combo.move(10, 20) self.select_point_combo.resize(120, 20) self.select_point_combo.activated[int].connect( self.select_point_combo_activated) self.grid_on.move(515, 291) self.grid_on.setChecked(False) self.grid_on.stateChanged.connect(self.grid_on_changed) self.grid_label.move(533, 290) self.show()
def show_fig(self): if self.fold is None: self.console.append('[ERROR] You haven\'t opened an image!') return self.start_btn_hit = False try: self.resultlayer.removeWidget(self.result_figure) except: self.resultlayer.removeWidget(self.resultview) # 移除旧的画布 try: self.imageshow.removeWidget(self.plot_figure) self.imageshow.removeWidget(self.tool) except: self.imageshow.removeWidget(self.photoview) # finally: # pass filename = self.imgfile.currentText() filepath = os.path.join(self.fold, filename) self.console.append(f"[INFO] Showing:{filename}") self.filepath = filepath plt.close('all') self.plot_figure = ImageView(width=8, height=8, dpi=110) self.tool = NavigationToolbar2QT(self.plot_figure, self) if filepath[-3:] == "dcm": # 读取dicom文件 _slice = preprocess(filepath) # 设置id, 长, 宽 self.id.setText(_slice.PatientID) self.length.setText(str(_slice.pixel_array.shape[1])) self.width.setText(str(_slice.pixel_array.shape[0])) self.image = _slice else: self.image = plt.imread(filepath) # if self.image.ndim == 3: # self.image = rgb_to_grey(self.image) # self.id.setText(" ") self.length.setText(str(self.image.shape[1])) self.width.setText(str(self.image.shape[0])) self.id.setText(str(self.image.shape)) # while len(self.image) == 1: # self.image = self.image[0] self.imageshow.addWidget(self.plot_figure) self.imageshow.addWidget(self.tool) _img = filepath.split(path_sign)[-1] if len(self.image.shape) == 3: plt.imshow(self.image) else: plt.imshow(self.image, plt.gray()) # plt.imshow(np.around(torch.clamp(jet(image.expand(1,3,-1,-1)), 0, 1)[0,0].cpu().numpy()*255).astype(np.uint8)) # 显示大标题 self.plot_figure.fig.suptitle(_img) self.t1_t5()
def show_gradcam(self, signal): if not self.start_btn_hit: self.console.append('[ERROR] Please Diagnose the image first') return plt.close('all') if self.image is None: self.console.append('[WARNING] Image is not selected') return # 移除旧的画布 try: self.imageshow.removeWidget(self.plot_figure) self.imageshow.removeWidget(self.tool) except: self.imageshow.removeWidget(self.photoview) finally: pass self.t1_t5() if signal == 0: self.rawimg.setDisabled(True) elif signal == 1: self.t1.setDisabled(True) elif signal == 2: self.t2.setDisabled(True) elif signal == 3: self.t3.setDisabled(True) elif signal == 4: self.t4.setDisabled(True) elif signal == 5: self.t5.setDisabled(True) else: raise Exception('Incorrect Signal Tossed!') self.plot_figure = ImageView(width=8, height=8, dpi=110) self.tool = NavigationToolbar2QT(self.plot_figure, self) selected_index = self.models.currentIndex() selected_model = Models[selected_index] if not selected_model.loaded: selected_model.load_state_dict( torch.load(MODEL_PATH[selected_index])) selected_model.loaded = True selected_model.eval() image = self.image if isinstance(image, np.ndarray): image = torch.tensor(image) if len(image.shape) == 3: self.console.append( '[WARNING] For Heatmap, please use GradCAM Diagnose for optimal result' ) image = rgb_to_grey(image) image = (image - 0.188) / 0.315 image = image.expand(1, 3, -1, -1) ind = torch.tensor([[signal]]) grad_cam = GradCAM(model=selected_model) cam = grad_cam(image.expand(1, 3, -1, -1), ind) cam = jet(cam) image = torch.clamp(image * ct_std + ct_mean, 0, 1) + cam image = np.moveaxis(image[0].cpu().numpy(), 0, 2) image = image / image.max() image = np.around(image * 255).astype(np.uint8) # if image.shape[0] == 3: # image = image[0] plt.imshow(image) self.imageshow.addWidget(self.plot_figure) self.imageshow.addWidget(self.tool) # 显示大标题 name_list = [ "Any", "Epidural", "Intraparenchymal", "Intraventricular", "Subarachnoid", "Subdural" ] if self.flag[signal] == 'green': title = f"{name_list[signal]} - Not Diagnosed" else: title = f"{name_list[signal]} - Diagnosed" self.plot_figure.fig.suptitle(title)