Exemple #1
0
class BqplotXRangeMode(BqplotSelectionTool):

    icon = 'glue_xrange_select'
    tool_id = 'bqplot:xrange'
    action_text = 'X range ROI'
    tool_tip = 'Select a range of x values'

    def __init__(self, viewer, **kwargs):

        super().__init__(viewer, **kwargs)

        self.interact = BrushIntervalSelector(scale=self.viewer.scale_x,
                                              color=INTERACT_COLOR)

        self.interact.observe(self.update_selection, "brushing")

    def update_selection(self, *args):
        with self.viewer._output_widget:
            if self.interact.selected is not None:
                x = self.interact.selected
                if x is not None and len(x):
                    roi = RangeROI(min=min(x), max=max(x), orientation='x')
                    self.viewer.apply_roi(roi)

    def activate(self):
        with self.viewer._output_widget:
            self.interact.selected = None
        super().activate()
Exemple #2
0
class BqplotYRangeMode(InteractCheckableTool):

    icon = 'glue_yrange_select'
    tool_id = 'bqplot:yrange'
    action_text = 'Y range ROI'
    tool_tip = 'Select a range of y values'

    def __init__(self, viewer, **kwargs):

        super().__init__(viewer, **kwargs)

        self.interact = BrushIntervalSelector(scale=self.viewer.scale_y,
                                              orientation='vertical',
                                              color=INTERACT_COLOR)

        self.interact.observe(self.update_selection, "brushing")

    def update_selection(self, *args):
        with self.viewer._output_widget:
            if self.interact.selected is not None:
                y = self.interact.selected
                if y is not None and len(y):
                    roi = RangeROI(min=min(y), max=max(y), orientation='y')
                    self.viewer.apply_roi(roi)

    def activate(self):
        with self.viewer._output_widget:
            self.interact.selected = None
        super().activate()
Exemple #3
0
    def __init__(self, viewer, **kwargs):

        super().__init__(viewer, **kwargs)

        self.interact = BrushIntervalSelector(scale=self.viewer.scale_x,
                                              color=INTERACT_COLOR)

        self.interact.observe(self.update_selection, "brushing")
Exemple #4
0
    def __init__(self, viewer, **kwargs):

        super().__init__(viewer, **kwargs)

        self.interact = BrushIntervalSelector(scale=self.viewer.scale_y,
                                              orientation='vertical',
                                              color="green")

        self.interact.observe(self.update_selection, "brushing")
Exemple #5
0
    def show(self,
             title='',
             xlabel='',
             ylabel='',
             xaxis=True,
             yaxis=True,
             xticks=True,
             yticks=True,
             legend=True,
             grid=True,
             **kwargs):
        # require all data to be present before plotting
        x = Axis(title=xlabel, scale=self._x_sc)
        y = Axis(title=ylabel, scale=self._y_sc, orientation='vertical')
        fig = Figure(axes=[x, y],
                     marks=self._marks,
                     title=title,
                     legend_location='right',
                     interactions=BrushIntervalSelector())

        display(VBox([fig, Toolbar(figure=fig)]))
Exemple #6
0
    def interaction_map(self):  # , xScale, yScale, fig, mark, deb):

        self.interactions = {}

        xScale = self.xScale  # if xScale is None else xScale
        yScale = self.yScale  # if yScale is None else yScale
        fig = self.fig  # if fig is None else fig
        mark = fig.marks  # if mark is None else mark

        multi_sel = MultiSelector(scale=xScale, marks=mark)
        br_intsel = BrushIntervalSelector(scale=xScale, marks=mark)
        index_sel = IndexSelector(scale=xScale, marks=mark)
        int_sel = FastIntervalSelector(scale=xScale, marks=mark)
        br_sel = BrushSelector(x_scale=xScale, y_scale=yScale, marks=mark, color='red')
        pz = PanZoom(scales={'x': [xScale], 'y': [yScale]})

        self.interactions['Multiple_Brush'] = multi_sel
        self.interactions['BrushX'] = br_intsel
        self.interactions['Fast_Brush'] = int_sel
        self.interactions['Brush'] = br_sel
        self.interactions['Index_Selector'] = index_sel
        self.interactions['Pan_Zoom'] = pz
Exemple #7
0
 def _new_interact(self):
     return BrushIntervalSelector(scale=self.viewer.scale_x,
                                  color=INTERACT_COLOR)
Exemple #8
0
    def interaction_map(self):  # , xScale, yScale, fig, mark, deb):

        self.interactions = {}

        xScale = self.xScale  # if xScale is None else xScale
        yScale = self.yScale  # if yScale is None else yScale
        fig = self.fig  # if fig is None else fig
        mark = fig.marks  # if mark is None else mark

        multi_sel = MultiSelector(scale=xScale, marks=mark)
        br_intsel = BrushIntervalSelector(scale=xScale, marks=mark)
        index_sel = IndexSelector(scale=xScale, marks=mark)
        int_sel = FastIntervalSelector(scale=xScale, marks=mark)
        br_sel = BrushSelector(x_scale=xScale,
                               y_scale=yScale,
                               marks=mark,
                               color='red')
        pz = PanZoom(scales={'x': [xScale], 'y': [yScale]})

        def cb1(change):
            if len(change.new) > 1:
                xr = change.new
                yr = [None, None]
                box = [[xr[0], yr[0]], [xr[1], yr[1]]]
                y = getattr(self, "cbs", None)

                if y is not None:
                    for k in self.cbs:
                        if 'brush' in k:
                            if self.debug:
                                self.deb.value = str(box)
                            cb = self.cbs[k]
                            if not self.dims:
                                cb(box)
                            else:
                                cb(box,
                                   [self.alldims.index(d) for d in self.dims])

            else:
                y = getattr(self, "cbs", None)
                # Single selector should have different cbs

                if y is not None:
                    if 'bar' in self.cbs:
                        cb = self.cbs['bar']
                        if not self.dims:
                            cb(change.new)
                        else:
                            cb(change.new,
                               [self.alldims.index(d) for d in self.dims])

        def cb2(change):
            box = self.interactions['brush']['selector'].selected
            y = getattr(self, "cbs", None)

            if y is not None:
                if 'brush' in self.cbs:
                    if self.debug:
                        self.deb.value = str(box)
                    cb = self.cbs['brush']
                    if not self.dims:
                        cb(box)
                    else:
                        cb(box, [self.alldims.index(d) for d in self.dims])

        def cb3(change):
            newscales = change.new
            y = getattr(self, "cbs", None)

            if y is not None:
                if 'panzoom' in self.cbs:
                    cb = self.cbs['panzoom']
                    cb(newscales['x'], newscales['y'])

        multi_sel.observe(cb1, names=['selected'])
        br_intsel.observe(cb1, names=['selected'])  # 'selected'])
        index_sel.observe(cb1, names=['selected'])
        int_sel.observe(cb1, names=['selected'])
        br_sel.observe(cb2, names=['brushing'])
        pz.observe(cb3, names=['scales'])

        self.interactions['brushes'] = {}
        self.interactions['brushes']['selector'] = multi_sel
        self.interactions['brushes']['icon'] = 'th-large'
        self.interactions['brushes']['tooltip'] = 'Multiple Brushes'
        self.interactions['brushes']['order'] = 0  # '   '
        self.interactions['brushes']['watch'] = 'selected'

        self.interactions['brush_x'] = {}
        self.interactions['brush_x']['selector'] = br_intsel
        self.interactions['brush_x']['icon'] = 'arrows-h'
        self.interactions['brush_x']['tooltip'] = 'Horizontal Brush'
        self.interactions['brush_x']['order'] = 1  # '     '
        self.interactions['brush_x']['watch'] = 'selected'

        self.interactions['brush_fast'] = {}
        self.interactions['brush_fast']['selector'] = int_sel
        self.interactions['brush_fast']['icon'] = 'exchange'
        self.interactions['brush_fast']['tooltip'] = 'Fast Brush'
        self.interactions['brush_fast']['order'] = 3  # '      '
        self.interactions['brush_fast']['watch'] = 'selected'

        self.interactions['brush'] = {}
        self.interactions['brush']['selector'] = br_sel
        self.interactions['brush']['icon'] = 'retweet'
        self.interactions['brush']['tooltip'] = 'Brush'
        self.interactions['brush']['order'] = 4  # '       '
        self.interactions['brush']['watch'] = 'brushing'

        self.interactions['bar'] = {}
        self.interactions['bar']['selector'] = index_sel
        self.interactions['bar']['icon'] = 'mouse-pointer'
        self.interactions['bar']['tooltip'] = 'Single Slider'
        self.interactions['bar']['order'] = 5  # ' '
        self.interactions['bar']['watch'] = 'selected'

        self.interactions['panzoom'] = {}
        self.interactions['panzoom']['selector'] = pz
        self.interactions['panzoom']['icon'] = 'arrows'
        self.interactions['panzoom']['tooltip'] = 'Pan Zoom'
        self.interactions['panzoom']['order'] = 6  # ''
        self.interactions['panzoom']['watch'] = 'scales'
Exemple #9
0
    def interaction_map(self):  # , xScale, yScale, fig, mark, deb):

        self.interactions = {}

        xScale = self.xScale  # if xScale is None else xScale
        yScale = self.yScale  # if yScale is None else yScale
        fig = self.fig  # if fig is None else fig
        mark = fig.marks  # if mark is None else mark

        multi_sel = MultiSelector(scale=xScale, marks=mark)
        br_intsel = BrushIntervalSelector(scale=xScale, marks=mark)
        index_sel = IndexSelector(scale=xScale, marks=mark)
        int_sel = FastIntervalSelector(scale=xScale, marks=mark)
        br_sel = BrushSelector(x_scale=xScale,
                               y_scale=yScale,
                               marks=mark,
                               color='red')
        pz = PanZoom(scales={'x': [xScale], 'y': [yScale]})

        # def cb1(change):
        #
        # def cb2(change):
        #
        # def cb3(change):

        self.interactions['brushes'] = {}
        self.interactions['brushes']['selector'] = multi_sel
        self.interactions['brushes']['icon'] = 'th-large'
        self.interactions['brushes']['tooltip'] = 'Multiple Brushes'
        self.interactions['brushes']['order'] = 0  # '   '
        self.interactions['brushes']['watch'] = 'selected'

        self.interactions['brush_x'] = {}
        self.interactions['brush_x']['selector'] = br_intsel
        self.interactions['brush_x']['icon'] = 'arrows-h'
        self.interactions['brush_x']['tooltip'] = 'Horizontal Brush'
        self.interactions['brush_x']['order'] = 1  # '     '
        self.interactions['brush_x']['watch'] = 'selected'

        self.interactions['brush_fast'] = {}
        self.interactions['brush_fast']['selector'] = int_sel
        self.interactions['brush_fast']['icon'] = 'exchange'
        self.interactions['brush_fast']['tooltip'] = 'Fast Brush'
        self.interactions['brush_fast']['order'] = 3  # '      '
        self.interactions['brush_fast']['watch'] = 'selected'

        self.interactions['brush'] = {}
        self.interactions['brush']['selector'] = br_sel
        self.interactions['brush']['icon'] = 'retweet'
        self.interactions['brush']['tooltip'] = 'Brush'
        self.interactions['brush']['order'] = 4  # '       '
        self.interactions['brush']['watch'] = 'brushing'

        self.interactions['bar'] = {}
        self.interactions['bar']['selector'] = index_sel
        self.interactions['bar']['icon'] = 'mouse-pointer'
        self.interactions['bar']['tooltip'] = 'Single Slider'
        self.interactions['bar']['order'] = 5  # ' '
        self.interactions['bar']['watch'] = 'selected'

        self.interactions['panzoom'] = {}
        self.interactions['panzoom']['selector'] = pz
        self.interactions['panzoom']['icon'] = 'arrows'
        self.interactions['panzoom']['tooltip'] = 'Pan Zoom'
        self.interactions['panzoom']['order'] = 6  # ''
        self.interactions['panzoom']['watch'] = 'scales'