#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])
Это намного эффективнее.