Ejemplo n.º 1
0
    def __init__(
        self,
        ax,
        onselect,
        button=None,
        minspanx=None,
        minspany=None,
        useblit=True,
        lineprops=None,
        rectprops=dict(facecolor="red", edgecolor="black", alpha=0.5, fill=True),
        proxy=5,
    ):
        RectangleSelector.__init__(
            self,
            ax=ax,
            onselect=onselect,
            drawtype="box",
            spancoords="data",
            minspanx=minspanx,
            minspany=minspany,
            useblit=useblit,
            lineprops=lineprops,
            rectprops=rectprops,
            button=button,
        )

        self.fixedSize = None
        self.prevEvents = None
        self.proxy = max(
            self.ax.transData.transform_point((proxy / 100, proxy / 100)) - self.ax.transData.transform_point((0, 0))
        )
Ejemplo n.º 2
0
    def __init__(self, ax, on_move=None, on_release=None, on_enter=None, maxdist=10, rect_props=None):
        CanvasToolBase.__init__(self, ax, on_move=on_move, on_enter=on_enter, on_release=on_release)

        props = dict(edgecolor=None, facecolor="r", alpha=0.15)
        props.update(rect_props if rect_props is not None else {})
        if props["edgecolor"] is None:
            props["edgecolor"] = props["facecolor"]
        RectangleSelector.__init__(self, ax, lambda *args: None, rectprops=props, useblit=self.useblit)
        # Alias rectangle attribute, which is initialized in RectangleSelector.
        self._rect = self.to_draw
        self._rect.set_animated(True)

        self.maxdist = maxdist
        self.active_handle = None
        self._extents_on_press = None

        if on_enter is None:

            def on_enter(extents):
                print("(xmin=%.3g, xmax=%.3g, ymin=%.3g, ymax=%.3g)" % extents)

        self.callback_on_enter = on_enter

        props = dict(mec=props["edgecolor"])
        self._corner_order = ["NW", "NE", "SE", "SW"]
        xc, yc = self.corners
        self._corner_handles = ToolHandles(ax, xc, yc, marker_props=props)

        self._edge_order = ["W", "N", "E", "S"]
        xe, ye = self.edge_centers
        self._edge_handles = ToolHandles(ax, xe, ye, marker="s", marker_props=props)

        self._artists = [self._rect, self._corner_handles.artist, self._edge_handles.artist]
Ejemplo n.º 3
0
    def __init__(self, ax, x, y, rectprops=None, aspect=None):
        RectangleSelector.__init__(self,
                                   ax,
                                   self.onselect,
                                   rectprops=rectprops,
                                   useblit=False,
                                   interactive=True)

        self.state_modifier_keys = dict(move=' ',
                                        accept='enter',
                                        clear='c',
                                        disconnect='escape',
                                        square='shift',
                                        center='control')

        self.data = list(zip(x, y))
        self.sel = []

        self._onselect = None

        if aspect is not None:
            if isinstance(aspect, (list, tuple, np.ndarray)):
                self.ratio = aspect[1] / aspect[0]
            elif type(aspect) == float:
                self.ratio = aspect
            elif type(aspect) == int:
                self.ratio = float(aspect)
Ejemplo n.º 4
0
 def __init__(self, lines, drawtype='box',
              minspanx=None, minspany=None, useblit=False,
              lineprops=None, rectprops=None, spancoords='data',
              button=None, maxdist=10, marker_props=None,
              interactive=False, state_modifier_keys=None):
     
     self.verbose = True
     self.lines = flatten(lines)
     ax = self.lines[0].axes
     
     RectangleSelector.__init__( self, ax, self.select_lines, drawtype,
                                     minspanx, minspany, useblit,
                                     lineprops, rectprops, spancoords,
                                     button, maxdist, marker_props,
                                     interactive, state_modifier_keys)
 
     hprops = dict(linewidth=10, alpha=0.5, linestyle='-') # marker='s'
     self.selection = [ np.zeros(l.get_xdata().shape, bool) 
                         for l in self.lines ]
     
     #Create Line2D for highlighting selected sections
     self.highlighted = []
     for line in self.lines:
         hline, = ax.plot([], [], color=line.get_color(), **hprops)
         self.highlighted.append( hline )
         self.artists.append( hline )       #enable blitting for the highlighted segments
Ejemplo n.º 5
0
    def __init__(self,
                 viewer,
                 on_move=None,
                 on_release=None,
                 on_enter=None,
                 maxdist=10,
                 rect_props=None):
        CanvasToolBase.__init__(self,
                                viewer,
                                on_move=on_move,
                                on_enter=on_enter,
                                on_release=on_release)

        props = dict(edgecolor=None, facecolor='r', alpha=0.15)
        props.update(rect_props if rect_props is not None else {})
        if props['edgecolor'] is None:
            props['edgecolor'] = props['facecolor']
        RectangleSelector.__init__(self,
                                   self.ax,
                                   lambda *args: None,
                                   rectprops=props)
        self.disconnect_events()  # events are handled by the viewer
        # Alias rectangle attribute, which is initialized in RectangleSelector.
        self._rect = self.to_draw
        self._rect.set_animated(True)

        self.maxdist = maxdist
        self.active_handle = None
        self._extents_on_press = None

        if on_enter is None:

            def on_enter(extents):
                print("(xmin=%.3g, xmax=%.3g, ymin=%.3g, ymax=%.3g)" % extents)

        self.callback_on_enter = on_enter

        props = dict(mec=props['edgecolor'])
        self._corner_order = ['NW', 'NE', 'SE', 'SW']
        xc, yc = self.corners
        self._corner_handles = ToolHandles(self.ax, xc, yc, marker_props=props)

        self._edge_order = ['W', 'N', 'E', 'S']
        xe, ye = self.edge_centers
        self._edge_handles = ToolHandles(self.ax,
                                         xe,
                                         ye,
                                         marker='s',
                                         marker_props=props)

        self.artists = [
            self._rect, self._corner_handles.artist, self._edge_handles.artist
        ]
        viewer.add_tool(self)
Ejemplo n.º 6
0
    def __init__(self, viewer, on_move=None, on_release=None, on_enter=None,
                 maxdist=10, rect_props=None):
        self._rect = None
        props = dict(edgecolor=None, facecolor='r', alpha=0.15)
        props.update(rect_props if rect_props is not None else {})
        if props['edgecolor'] is None:
            props['edgecolor'] = props['facecolor']
        RectangleSelector.__init__(self, viewer.ax, lambda *args: None,
                                   rectprops=props)
        CanvasToolBase.__init__(self, viewer, on_move=on_move,
                                on_enter=on_enter, on_release=on_release)

        # Events are handled by the viewer
        try:
            self.disconnect_events()
        except AttributeError:
            # disconnect the events manually (hack for older mpl versions)
            [self.canvas.mpl_disconnect(i) for i in range(10)]

        # Alias rectangle attribute, which is initialized in RectangleSelector.
        self._rect = self.to_draw
        self._rect.set_animated(True)

        self.maxdist = maxdist
        self.active_handle = None
        self._extents_on_press = None

        if on_enter is None:
            def on_enter(extents):
                print("(xmin=%.3g, xmax=%.3g, ymin=%.3g, ymax=%.3g)" % extents)
        self.callback_on_enter = on_enter

        props = dict(mec=props['edgecolor'])
        self._corner_order = ['NW', 'NE', 'SE', 'SW']
        xc, yc = self.corners
        self._corner_handles = ToolHandles(self.ax, xc, yc, marker_props=props)

        self._edge_order = ['W', 'N', 'E', 'S']
        xe, ye = self.edge_centers
        self._edge_handles = ToolHandles(self.ax, xe, ye, marker='s',
                                         marker_props=props)

        self.artists = [self._rect,
                        self._corner_handles.artist,
                        self._edge_handles.artist]
        viewer.add_tool(self)
Ejemplo n.º 7
0
 def __init__(self, ax):
     RectangleSelector.__init__(self, ax, self.onselect)
Ejemplo n.º 8
0
 def __init__(self, event):
     RectangleSelector.__init__(self, Plot.plot.ax, onselect=self.onselect, useblit=True)