def update_labels(self): """ Trigger an updaet of labels The method calls `get_labels` which in turn calls the widget's `get_label_data`. The obtained labels are shown if the corresponding points are selected or if `label_only_selected` is `false`. """ for label in self.labels: self.plot_widget.removeItem(label) self.labels = [] if self.scatterplot_item is None \ or self.label_only_selected and self.selection is None: return labels = self.get_labels() if labels is None: return black = pg.mkColor(0, 0, 0) x, y = self.scatterplot_item.getData() if self.label_only_selected: selected = np.nonzero(self._filter_visible(self.selection)) labels = labels[selected] x = x[selected] y = y[selected] for label, xp, yp in zip(labels, x, y): ti = TextItem(label, black) ti.setPos(xp, yp) self.plot_widget.addItem(ti) self.labels.append(ti)
def createGraphWidget(self): plotWidget = pg.PlotWidget() self.graphLayout.addWidget(plotWidget) self.plotItem = plotWidget.getPlotItem() self.plotItem.showGrid(x=True, y=True) self.plotItem.setLabel("left", "Średnia temperatura [°C]") self.plotItem.setLabel("bottom", "Czas [s]") self.plot = self.plotItem.plot() self.plotCurrent = self.plotItem.plot( symbol="o", symbolPen=(0, 122, 217), symbolBrush=(0, 122, 217) ) self.currentLabel = TextItem("cell", (255, 255, 255), anchor=(0, 0))
def add_param_tree(self): self.ptree = ptree.ParameterTree(showHeader=False) self.filter = DataFilterParameter() params = ptree.Parameter.create(name='params', type='group', children=[self.filter]) self.ptree.setParameters(params, showTop=False) self.filter_layout.addWidget(self.ptree) self.filterText = TextItem(border=getConfigOption('foreground')) self.filterText.setPos(60, 20) self.filterText.setParentItem(self.plot.plotItem) self.filter.sigFilterChanged.connect(self.filterChanged) self.filter.setFields([('butterFilter', {'units': 'Hz'})])
def update_labels(self): """ Trigger an update of labels The method calls `get_labels` which in turn calls the widget's `get_label_data`. The obtained labels are shown if the corresponding points are selected or if `label_only_selected` is `false`. """ for label in self.labels: self.plot_widget.removeItem(label) self.labels = [] if self.scatterplot_item is None \ or self.label_only_selected and self.selection is None: self._signal_too_many_labels(False) return labels = self.get_labels() if labels is None: self._signal_too_many_labels(False) return (x0, x1), (y0, y1) = self.view_box.viewRange() x, y = self.scatterplot_item.getData() mask = np.logical_and(np.logical_and(x >= x0, x <= x1), np.logical_and(y >= y0, y <= y1)) if self.label_only_selected: mask = np.logical_and(mask, self._filter_visible(self.selection) != 0) if mask.sum() > self.MAX_VISIBLE_LABELS: self._signal_too_many_labels(True) return black = pg.mkColor(0, 0, 0) labels = labels[mask] x = x[mask] y = y[mask] for label, xp, yp in zip(labels, x, y): ti = TextItem(label, black) ti.setPos(xp, yp) self.plot_widget.addItem(ti) self.labels.append(ti) self._signal_too_many_labels(False)
def update_labels(self): """ Trigger an update of labels The method calls `get_labels` which in turn calls the widget's `get_label_data`. The obtained labels are shown if the corresponding points are selected or if `label_only_selected` is `false`. """ for label in self.labels: self.plot_widget.removeItem(label) self.labels = [] mask = None if self.scatterplot_item is not None: x, y = self.scatterplot_item.getData() mask = self._label_mask(x, y) if mask is not None: labels = self.get_labels() if labels is None: mask = None self._signal_too_many_labels(mask is not None and mask.sum() > self.MAX_VISIBLE_LABELS) if self._too_many_labels or mask is None or not np.any(mask): return black = pg.mkColor(0, 0, 0) labels = labels[mask] x = x[mask] y = y[mask] for label, xp, yp in zip(labels, x, y): ti = TextItem(label, black) ti.setPos(xp, yp) self.plot_widget.addItem(ti) self.labels.append(ti)
def create_labels(self): for x, y in zip(*self.scatterplot_item.getData()): ti = TextItem() self.plot_widget.addItem(ti) ti.setPos(x, y) self.labels.append(ti)
def plotData(self): offset = 0 lastAutoRangeState = self._graphicsView.vb.getState()['autoRange'] self._graphicsView.disableAutoRange(ViewBox.XYAxes) if self.lastEnabledChannels and self.lastEnabledChannels != self.signalTableModel.enabledList: for curve in concatenate_iter(self.curveBundle, self.curveAuxBundle, self.curveTriggerBundle, self.curveGateBundle): if curve: self._graphicsView.removeItem(curve) self.curveBundle = None self.curveAuxBundle = None self.curveTriggerBundle = None self.curveGateBundle = None if self.textItems: for item in self.textItems: self._graphicsView.removeItem(item) if self.yDataBundle: if self.curveBundle is None: self.curveBundle = list() for i, yData in enumerate(self.yDataBundle): if yData: curve = PlotCurveItem(self.xData, yData, stepMode=True, fillLevel=offset, brush=penList[1][4], pen=penList[1][0]) self._graphicsView.addItem(curve) self.curveBundle.append(curve) textItem = TextItem( self.signalTableModel.primaryChannelName(i), anchor=(1, 1), color=(0, 0, 0)) textItem.setPos(0, offset) self._graphicsView.addItem(textItem) self.textItems.append(textItem) offset += 1 else: self.curveBundle.append(None) else: for curve, yData in zip(self.curveBundle, self.yDataBundle): if yData: if curve: curve.setData(x=self.xData, y=yData) nextChannel = self.settings.numChannels if self.yAuxDataBundle: if self.curveAuxBundle is None: self.curveAuxBundle = list() for i, yAuxData in enumerate(self.yAuxDataBundle): if yAuxData: curve = PlotCurveItem(self.xAuxData, yAuxData, stepMode=True, fillLevel=offset, brush=penList[2][4], pen=penList[2][0]) self._graphicsView.addItem(curve) self.curveAuxBundle.append(curve) textItem = TextItem( self.signalTableModel.auxChannelName(i), anchor=(1, 1), color=(0, 0, 0)) textItem.setPos(0, offset) self._graphicsView.addItem(textItem) self.textItems.append(textItem) offset += 1 else: self.curveAuxBundle.append(None) else: for curve, yAuxData in zip(self.curveAuxBundle, self.yAuxDataBundle): if yAuxData: if curve: curve.setData(x=self.xAuxData, y=yAuxData) nextChannel += self.settings.numAuxChannels if self.yTriggerBundle: if self.curveTriggerBundle is None: self.curveTriggerBundle = list() for i, yTrigger in enumerate(self.yTriggerBundle): if yTrigger: curve = PlotCurveItem(self.xTrigger, yTrigger, stepMode=True, fillLevel=offset, brush=penList[3][4], pen=penList[3][0]) self._graphicsView.addItem(curve) self.curveTriggerBundle.append(curve) textItem = TextItem( self.signalTableModel.triggerChannelName(i), anchor=(1, 1), color=(0, 0, 0)) textItem.setPos(0, offset) self._graphicsView.addItem(textItem) self.textItems.append(textItem) offset += 1 else: self.curveTriggerBundle.append(None) else: for curve, yTrigger in zip(self.curveTriggerBundle, self.yTriggerBundle): if yTrigger: if curve: curve.setData(x=self.xTrigger, y=yTrigger) nextChannel = self.settings.numTriggerChannels if self.yGateDataBundle: if self.curveGateBundle is None: self.curveGateBundle = list() for i, yGateData in enumerate(self.yGateDataBundle): if yGateData: curve = PlotCurveItem(self.xGateData, yGateData, stepMode=True, fillLevel=offset, brush=penList[2][4], pen=penList[2][0]) self._graphicsView.addItem(curve) self.curveGateBundle.append(curve) textItem = TextItem( self.signalTableModel.gateChannelName(i), anchor=(1, 1), color=(0, 0, 0)) textItem.setPos(0, offset) self._graphicsView.addItem(textItem) self.textItems.append(textItem) offset += 1 else: self.curveGateBundle.append(None) else: for curve, yGateData in zip(self.curveGateBundle, self.yGateDataBundle): if yGateData: if curve: curve.setData(x=self.xGateData, y=yGateData) self.lastEnabledChannels = list(self.signalTableModel.enabledList) xautorange, yautorange = lastAutoRangeState if xautorange: self._graphicsView.enableAutoRange(ViewBox.XAxis) if yautorange: self._graphicsView.enableAutoRange(ViewBox.YAxis) self._graphicsView.autoRange()