Как мне очистить диаграмму рассеяния в PYQTGRAPH

#python #python-2.7 #pyqtgraph

#python #python-2.7 #pyqtgraph

Вопрос:

Я пытаюсь переместить «курсор» вокруг моего графика, используя диаграмму рассеяния и символ » » в качестве курсора. Курсор отлично обновляет свое положение, но я не могу понять, как очистить последний экземпляр. Вот строка, которую я использую для построения «курсора».

 self.cursor2 = self.p2_3.addItem(pg.ScatterPlotItem([self.xx], [self.yy], pen=None, symbol=' ', color = 'b'))
  

Я попробовал self.cursor2.clear(), но это не сработало. Любая помощь приветствуется.

Ответ №1:

Когда вы вызываете addItem, вы добавляете plottdataitem , в данном случае scatterplotitem, к вашему plotitem. Чтобы удалить его, вы вызываете removeItem таким же образом. Но для этого вам нужно сохранить ссылку на scatterplotitem.

Обратите внимание, что addItem ничего не возвращает, т.е. your self.cursor2 равно None.

Если вы хотите удалить все из своего графика, вы можете вызвать

 self.p2_3.clear()
  

в противном случае, чтобы просто удалить scatterplotitem, вы можете сделать это следующим образом

 import pyqtgraph as pg

win = pg.GraphicsWindow()
plotitem = win.addPlot()
scatterplot = pg.ScatterPlotItem([2], [3], symbol=' ', color = 'b')

plotitem.addItem(scatterplot)
plotitem.removeItem(scatterplot)
  

Комментарии:

1. Сработало как шарм. Спасибо.

Ответ №2:

Я бы предложил использовать setData для управления ScatterPlotItem данными вместо создания / добавления / удаления объекта при каждом перемещении мыши:

 # This just once:
self.scatterplot = pg.ScatterPlotItem(x=[], y=[], symbol=' ', color = 'b')
plotitem.addItem(self.scatterplot)


# On mouse hovering:
self.scatterplot.setData(x=[self.xx], y=[self.yy])
  

Это намного эффективнее.