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'})])
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
 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)
Example #7
0
    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()