diff --git a/pyqtgraph/graphicsItems/PlotItem/PlotItem.py b/pyqtgraph/graphicsItems/PlotItem/PlotItem.py index c7d47631..d13d194c 100644 --- a/pyqtgraph/graphicsItems/PlotItem/PlotItem.py +++ b/pyqtgraph/graphicsItems/PlotItem/PlotItem.py @@ -238,6 +238,7 @@ class PlotItem(GraphicsWidget): self.ctrl.averageGroup.toggled.connect(self.avgToggled) self.ctrl.maxTracesCheck.toggled.connect(self.updateDecimation) + self.ctrl.forgetTracesCheck.toggled.connect(self.updateDecimation) self.ctrl.maxTracesSpin.valueChanged.connect(self.updateDecimation) if labels is None: @@ -1008,12 +1009,14 @@ class PlotItem(GraphicsWidget): else: numCurves = self.ctrl.maxTracesSpin.value() - for i, curve in enumerate(self.curves): - if i < numCurves: - curve.show() - elif self.ctrl.forgetTracesCheck.isChecked(): + if self.ctrl.forgetTracesCheck.isChecked(): + for curve in self.curves[:-numCurves]: curve.clear() self.removeItem(curve) + + for i, curve in enumerate(reversed(self.curves)): + if i < numCurves: + curve.show() else: curve.hide() diff --git a/pyqtgraph/graphicsItems/PlotItem/tests/test_PlotItem.py b/pyqtgraph/graphicsItems/PlotItem/tests/test_PlotItem.py index 9c464ffd..0ff01a57 100644 --- a/pyqtgraph/graphicsItems/PlotItem/tests/test_PlotItem.py +++ b/pyqtgraph/graphicsItems/PlotItem/tests/test_PlotItem.py @@ -30,14 +30,28 @@ def test_PlotItem_maxTraces(): curve1 = pg.PlotDataItem(np.random.normal(size=10)) item.addItem(curve1) - assert curve1.isVisible(), f"{curve1} should be visible" + assert curve1.isVisible(), "curve1 should be visible" item.ctrl.maxTracesCheck.setChecked(True) item.ctrl.maxTracesSpin.setValue(0) - assert not curve1.isVisible(), f"{curve1} should not be visible" + assert not curve1.isVisible(), "curve1 should not be visible" item.ctrl.maxTracesCheck.setChecked(False) - assert curve1.isVisible(), f"{curve1} should be visible" + assert curve1.isVisible(), "curve1 should be visible" + + curve2 = pg.PlotDataItem(np.random.normal(size=10)) + item.addItem(curve2) + assert curve2.isVisible(), "curve2 should be visible" + + item.ctrl.maxTracesCheck.setChecked(True) + item.ctrl.maxTracesSpin.setValue(1) + assert curve2.isVisible(), "curve2 should be visible" + assert not curve1.isVisible(), "curve1 should not be visible" + assert curve1 in item.curves, "curve1 should be in the item's curves" + + item.ctrl.forgetTracesCheck.setChecked(True) + assert curve2 in item.curves, "curve2 should be in the item's curves" + assert curve1 not in item.curves, "curve1 should not be in the item's curves" def test_plotitem_menu_initialize():