No selections in scatter marker now updates to no selection instead of last selection
This commit is contained in:
parent
a6fbef9cfa
commit
c0bbe24c39
|
@ -677,26 +677,30 @@ class ScatterMarkerPlot(Plot):
|
|||
self.selection_listener(self.current_dim, ids)
|
||||
|
||||
def set_current_selection(self, selection):
|
||||
index = self.get_index_from_selection(self.dataset_1, selection)
|
||||
if not len(index)>0:
|
||||
return
|
||||
xdata_new = self.xaxis_data.take(index) #take data
|
||||
ydata_new = self.yaxis_data.take(index)
|
||||
|
||||
#remove old selection
|
||||
if self._selection_line:
|
||||
self.axes.lines.remove(self._selection_line)
|
||||
|
||||
self.axes.lines.remove(self._selection_line)
|
||||
index = self.get_index_from_selection(self.dataset_1, selection)
|
||||
if len(index)==0:
|
||||
# no selection
|
||||
self.canvas.draw()
|
||||
self._selection_line = None
|
||||
return
|
||||
|
||||
xdata_new = self.xaxis_data.take(index) #take data
|
||||
ydata_new = self.yaxis_data.take(index)
|
||||
self._selection_line = Line2D(xdata_new, ydata_new
|
||||
,marker='o', markersize=self.ms,
|
||||
linewidth=0, markerfacecolor='r',
|
||||
markeredgewidth=1.0)
|
||||
self.axes.add_line(self._selection_line)
|
||||
|
||||
if self.use_blit:
|
||||
if self._background is None:
|
||||
self._background = self.canvas.copy_from_bbox(self.axes.bbox)
|
||||
self.canvas.restore_region(self._background)
|
||||
self.axes.draw_artist(self._selection_line)
|
||||
if self.selection_line:
|
||||
self.axes.draw_artist(self._selection_line)
|
||||
self.canvas.blit()
|
||||
else:
|
||||
self.canvas.draw()
|
||||
|
@ -1762,11 +1766,9 @@ class Selector:
|
|||
return
|
||||
|
||||
self.eventrelease = event
|
||||
self._show_selector(False)
|
||||
if self.verts is not None:
|
||||
self.verts.append((event.xdata, event.ydata))
|
||||
self.line.set_visible(False)
|
||||
self.polygon.set_visible(False)
|
||||
self.canvas.blit(self.axes.bbox)
|
||||
if self.select_type == 'lasso':
|
||||
if len(self.verts)>2:
|
||||
self.callback(self.verts, event.key)
|
||||
|
@ -1774,7 +1776,7 @@ class Selector:
|
|||
x1, y1 = self.eventpress.xdata, self.eventpress.ydata
|
||||
x2, y2 = self.eventrelease.xdata, self.eventrelease.ydata
|
||||
self.callback(x1, y1, x2, y2, event.key)
|
||||
|
||||
|
||||
self.verts = []
|
||||
self.eventpress = None
|
||||
self.eventrelease = None
|
||||
|
@ -1813,11 +1815,7 @@ class Selector:
|
|||
def _onpress(self, event):
|
||||
# Is the event to be ignored?
|
||||
if self._ignore(event): return
|
||||
if self._background == None:
|
||||
self._background = self.canvas.copy_from_bbox(self.axes.bbox)
|
||||
|
||||
self.polygon.set_visible(True)
|
||||
self.line.set_visible(True)
|
||||
self._show_selector(True)
|
||||
self.eventpress = event
|
||||
self.verts = [(event.xdata, event.ydata)]
|
||||
return False
|
||||
|
@ -1838,18 +1836,23 @@ class Selector:
|
|||
if ignore:
|
||||
# remove poly + line if they are visible
|
||||
if self.polygon._visible or self.line._visible:
|
||||
self.polygon.set_visible(False)
|
||||
self.line.set_visible(False)
|
||||
self.canvas.restore_region(self._background)
|
||||
self.canvas.blit()
|
||||
self._show_selector(False)
|
||||
else:
|
||||
if not self.polygon._visible or not self.line._visible:
|
||||
# put poly + line back if we event is ok
|
||||
self.polygon.set_visible(True)
|
||||
self.line.set_visible(True)
|
||||
self._show_selector(True)
|
||||
|
||||
return ignore
|
||||
|
||||
def _show_selector(self, bool):
|
||||
if self.polygon and self.line:
|
||||
self.polygon.set_visible(bool)
|
||||
self.line.set_visible(bool)
|
||||
if self._background == None:
|
||||
self._background = self.canvas.copy_from_bbox(self.axes.bbox)
|
||||
self.canvas.restore_region(self._background)
|
||||
self.canvas.blit()
|
||||
|
||||
|
||||
# Create a view-changed signal that should be emitted every time
|
||||
# the active view changes.
|
||||
|
|
Reference in New Issue