예제 #1
0
 def test_errorbars_line_width_op_update(self):
     errorbars = HoloMap({
         0: ErrorBars([(0, 0, 0.1, 0.2, 1), (0, 1, 0.2, 0.4, 4),
                       (0, 2, 0.6, 1.2, 8)], vdims=['y', 'perr', 'nerr', 'line_width']),
         1: ErrorBars([(0, 0, 0.1, 0.2, 2), (0, 1, 0.2, 0.4, 6),
                       (0, 2, 0.6, 1.2, 4)], vdims=['y', 'perr', 'nerr', 'line_width'])
     }).options(linewidth='line_width')
     plot = mpl_renderer.get_plot(errorbars)
     artist = plot.handles['artist']
     self.assertEqual(artist.get_linewidths(), [1, 4, 8])
     plot.update((1,))
     self.assertEqual(artist.get_linewidths(), [2, 6, 4])
예제 #2
0
 def test_errorbars_color_op_update(self):
     errorbars = HoloMap({
         0: ErrorBars([(0, 0, 0.1, 0.2, '#000000'), (0, 1, 0.2, 0.4, '#FF0000'),
                       (0, 2, 0.6, 1.2, '#00FF00')], vdims=['y', 'perr', 'nerr', 'color']),
         1: ErrorBars([(0, 0, 0.1, 0.2, '#FF0000'), (0, 1, 0.2, 0.4, '#00FF00'),
                       (0, 2, 0.6, 1.2, '#0000FF')], vdims=['y', 'perr', 'nerr', 'color'])
     }).options(color='color')
     plot = mpl_renderer.get_plot(errorbars)
     artist = plot.handles['artist']
     self.assertEqual(artist.get_edgecolors(),
                      np.array([[0, 0, 0, 1], [1, 0, 0, 1], [0, 1, 0, 1]]))
     plot.update((1,))
     self.assertEqual(artist.get_edgecolors(),
                      np.array([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 1]]))
예제 #3
0
 def test_hover_tool_overlay_renderers(self):
     overlay = Curve(range(2)).opts(tools=['hover']) * ErrorBars(
         []).opts(tools=['hover'])
     plot = bokeh_renderer.get_plot(overlay)
     self.assertEqual(len(plot.handles['hover'].renderers), 1)
     self.assertEqual(plot.handles['hover'].tooltips, [('x', '@{x}'),
                                                       ('y', '@{y}')])
예제 #4
0
 def test_errorbars_linear_color_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, 0), (0, 1, 0.2, 0.4, 1),
                            (0, 2, 0.6, 1.2, 2)],
                           vdims=['y', 'perr', 'nerr',
                                  'color']).options(color='color')
     with self.assertRaises(Exception):
         mpl_renderer.get_plot(errorbars)
예제 #5
0
    def test_overlay_points_errorbars(self, dynamic=False):
        points = Points(self.data)
        error = ErrorBars(self.data, kdims='x', vdims=['y', 'e'])
        lnk_sel = link_selections.instance(unselected_color='#ff0000')
        overlay = points * error
        if dynamic:
            overlay = hv.util.Dynamic(overlay)

        linked = lnk_sel(overlay)
        current_obj = linked[()]

        # Check initial base layers
        self.check_base_points_like(current_obj.Points.I, lnk_sel)
        self.check_base_points_like(current_obj.ErrorBars.I, lnk_sel)

        # Check initial selection layers
        self.check_overlay_points_like(current_obj.Points.II, lnk_sel,
                                       self.data)
        self.check_overlay_points_like(current_obj.ErrorBars.II, lnk_sel,
                                       self.data)

        # Select first and third point
        boundsxy = lnk_sel._selection_expr_streams[0]._source_streams[0]
        boundsxy.event(bounds=(0, 0, 4, 2))
        current_obj = linked[()]

        # Check base layers haven't changed
        self.check_base_points_like(current_obj.Points.I, lnk_sel)
        self.check_base_points_like(current_obj.ErrorBars.I, lnk_sel)

        # Check selected layers
        self.check_overlay_points_like(current_obj.Points.II, lnk_sel,
                                       self.data.iloc[[0, 2]])
        self.check_overlay_points_like(current_obj.ErrorBars.II, lnk_sel,
                                       self.data.iloc[[0, 2]])
예제 #6
0
 def test_errorbars_categorical_color_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, 'A'), (0, 1, 0.2, 0.4, 'B'),
                            (0, 2, 0.6, 1.2, 'C')],
                           vdims=['y', 'perr', 'nerr',
                                  'color']).options(color='color')
     with self.assertRaises(Exception):
         mpl_renderer.get_plot(errorbars)
예제 #7
0
 def test_errorbars_line_color_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, '#000000'), (0, 1, 0.2, 0.4, '#FF0000'), (0, 2, 0.6, 1.2, '#00FF00')],
                           vdims=['y', 'perr', 'nerr', 'color']).options(edgecolor='color')
     plot = mpl_renderer.get_plot(errorbars)
     artist = plot.handles['artist']
     self.assertEqual(artist.get_edgecolors(), np.array([
         [0, 0, 0, 1], [1, 0, 0, 1], [0, 1, 0, 1]]
     ))
예제 #8
0
 def test_errorbars_line_width_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, 1), (0, 1, 0.2, 0.4, 4),
                            (0, 2, 0.6, 1.2, 8)],
                           vdims=['y', 'perr', 'nerr', 'line_width'
                                  ]).options(linewidth='line_width')
     plot = mpl_renderer.get_plot(errorbars)
     artist = plot.handles['artist']
     self.assertEqual(artist.get_linewidths(), [1, 4, 8])
예제 #9
0
 def test_errorbars_padding_logx(self):
     errorbars = ErrorBars([(1, 1, 0.5), (2, 2, 0.5),
                            (3, 3, 0.5)]).options(padding=0.1, logx=True)
     plot = bokeh_renderer.get_plot(errorbars)
     x_range, y_range = plot.handles['x_range'], plot.handles['y_range']
     self.assertEqual(x_range.start, 0.89595845984076228)
     self.assertEqual(x_range.end, 3.3483695221017129)
     self.assertEqual(y_range.start, 0.19999999999999996)
     self.assertEqual(y_range.end, 3.8)
예제 #10
0
 def test_errorbars_padding_logy(self):
     errorbars = ErrorBars([(1, 1, 0.5), (2, 2, 0.5),
                            (3, 3, 0.5)]).options(padding=0.1, logy=True)
     plot = bokeh_renderer.get_plot(errorbars)
     x_range, y_range = plot.handles['x_range'], plot.handles['y_range']
     self.assertEqual(x_range.start, 0.8)
     self.assertEqual(x_range.end, 3.2)
     self.assertEqual(y_range.start, 0.41158562699652224)
     self.assertEqual(y_range.end, 4.2518491541367327)
예제 #11
0
 def test_errorbars_plot(self):
     errorbars = ErrorBars([(0, 1, 0.5), (1, 2, 1), (2, 3, 2.25)], vdims=['y', 'y2'])
     state = self._get_plot_state(errorbars)
     self.assertEqual(state['data'][0]['x'], np.array([0, 1, 2]))
     self.assertEqual(state['data'][0]['y'], np.array([1, 2, 3]))
     self.assertEqual(state['data'][0]['error_y']['array'], np.array([0.5, 1, 2.25]))
     self.assertEqual(state['data'][0]['error_y']['arrayminus'], np.array([0.5, 1, 2.25]))
     self.assertEqual(state['data'][0]['mode'], 'lines')
     self.assertEqual(state['layout']['yaxis']['range'], [0.5, 5.25])
예제 #12
0
 def test_errorbars_padding_square(self):
     errorbars = ErrorBars([(1, 1, 0.5), (2, 2, 0.5),
                            (3, 3, 0.5)]).options(padding=0.1)
     plot = bokeh_renderer.get_plot(errorbars)
     x_range, y_range = plot.handles['x_range'], plot.handles['y_range']
     self.assertEqual(x_range.start, 0.8)
     self.assertEqual(x_range.end, 3.2)
     self.assertEqual(y_range.start, 0.19999999999999996)
     self.assertEqual(y_range.end, 3.8)
예제 #13
0
 def test_errorbars_line_width_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, 1), (0, 1, 0.2, 0.4, 4),
                            (0, 2, 0.6, 1.2, 8)],
                           vdims=['y', 'perr', 'nerr', 'line_width'
                                  ]).options(line_width='line_width')
     plot = bokeh_renderer.get_plot(errorbars)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     self.assertEqual(cds.data['line_width'], np.array([1, 4, 8]))
     self.assertEqual(glyph.line_width, {'field': 'line_width'})
예제 #14
0
 def test_errorbars_line_alpha_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, 0), (0, 1, 0.2, 0.4, 0.2),
                            (0, 2, 0.6, 1.2, 0.7)],
                           vdims=['y', 'perr', 'nerr',
                                  'alpha']).options(line_alpha='alpha')
     plot = bokeh_renderer.get_plot(errorbars)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     self.assertEqual(cds.data['line_alpha'], np.array([0, 0.2, 0.7]))
     self.assertEqual(glyph.line_alpha, {'field': 'line_alpha'})
예제 #15
0
 def test_errorbars_color_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, '#000'),
                            (0, 1, 0.2, 0.4, '#F00'),
                            (0, 2, 0.6, 1.2, '#0F0')],
                           vdims=['y', 'perr', 'nerr',
                                  'color']).options(color='color')
     plot = bokeh_renderer.get_plot(errorbars)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     self.assertEqual(cds.data['color'], np.array(['#000', '#F00', '#0F0']))
     self.assertEqual(glyph.line_color, {'field': 'color'})
예제 #16
0
 def test_complex_range_example(self):
     errors = [(0.1*i, np.sin(0.1*i), (i+1)/3., (i+1)/5.) for i in np.linspace(0, 100, 11)]
     errors = ErrorBars(errors, vdims=['y', 'yerrneg', 'yerrpos']).redim.range(y=(0, None))
     overlay = Curve(errors) * errors * VLine(4)
     plot = bokeh_renderer.get_plot(overlay)
     x_range = plot.handles['x_range']
     y_range = plot.handles['y_range']
     self.assertEqual(x_range.start, 0)
     self.assertEqual(x_range.end, 10.0)
     self.assertEqual(y_range.start, 0)
     self.assertEqual(y_range.end, 19.655978889110628)
예제 #17
0
 def test_points_errorbars_text_ndoverlay_categorical_xaxis_invert_axes(self):
     overlay = NdOverlay({i: Points(([chr(65+i)]*10,np.random.randn(10)))
                          for i in range(5)})
     error = ErrorBars([(el['x'][0], np.mean(el['y']), np.std(el['y']))
                        for el in overlay]).opts(plot=dict(invert_axes=True))
     text = Text('C', 0, 'Test')
     plot = bokeh_renderer.get_plot(overlay*error*text)
     x_range = plot.handles['x_range']
     y_range = plot.handles['y_range']
     self.assertIsInstance(x_range, Range1d)
     self.assertIsInstance(y_range, FactorRange)
     self.assertEqual(y_range.factors, ['A', 'B', 'C', 'D', 'E'])
예제 #18
0
 def test_points_errorbars_text_ndoverlay_categorical_xaxis(self):
     overlay = NdOverlay({i: Points(([chr(65+i)]*10,np.random.randn(10)))
                          for i in range(5)})
     error = ErrorBars([(el['x'][0], np.mean(el['y']), np.std(el['y']))
                        for el in overlay])
     text = Text('C', 0, 'Test')
     plot = bokeh_renderer.get_plot(overlay*error*text)
     x_range = plot.handles['x_range']
     y_range = plot.handles['y_range']
     self.assertIsInstance(x_range, FactorRange)
     factors = ['A', 'B', 'C', 'D', 'E']
     self.assertEqual(x_range.factors, ['A', 'B', 'C', 'D', 'E'])
     self.assertIsInstance(y_range, Range1d)
     error_plot = plot.subplots[('ErrorBars', 'I')]
     for xs, factor in zip(error_plot.handles['source'].data['base'], factors):
         self.assertEqual(factor, xs)
예제 #19
0
 def test_errorbars_categorical_color_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, 'A'), (0, 1, 0.2, 0.4, 'B'),
                            (0, 2, 0.6, 1.2, 'C')],
                           vdims=['y', 'perr', 'nerr',
                                  'color']).options(color='color')
     plot = bokeh_renderer.get_plot(errorbars)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     cmapper = plot.handles['color_color_mapper']
     self.assertTrue(cmapper, CategoricalColorMapper)
     self.assertEqual(cmapper.factors, ['A', 'B', 'C'])
     self.assertEqual(cds.data['color'], np.array(['A', 'B', 'C']))
     self.assertEqual(glyph.line_color, {
         'field': 'color',
         'transform': cmapper
     })
예제 #20
0
 def test_errorbars_linear_color_op(self):
     errorbars = ErrorBars([(0, 0, 0.1, 0.2, 0), (0, 1, 0.2, 0.4, 1),
                            (0, 2, 0.6, 1.2, 2)],
                           vdims=['y', 'perr', 'nerr',
                                  'color']).options(color='color')
     plot = bokeh_renderer.get_plot(errorbars)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     cmapper = plot.handles['color_color_mapper']
     self.assertTrue(cmapper, LinearColorMapper)
     self.assertEqual(cmapper.low, 0)
     self.assertEqual(cmapper.high, 2)
     self.assertEqual(cds.data['color'], np.array([0, 1, 2]))
     self.assertEqual(glyph.line_color, {
         'field': 'color',
         'transform': cmapper
     })
예제 #21
0
 def test_errorbar_test(self):
     errorbars = ErrorBars(([0, 1], [1, 2], [0.1, 0.2]))
     plot = mpl_renderer.get_plot(errorbars)
     plot.initialize_plot()
 def test_visible(self):
     element = ErrorBars([(0, 1, 0.5), (1, 2, 1), (2, 3, 2.25)],
                         vdims=['y', 'y2']).options(visible=False)
     state = self._get_plot_state(element)
     self.assertEqual(state['data'][0]['visible'], False)
예제 #23
0
 def test_errorbars_alpha_op(self):
     errorbars = ErrorBars([(0, 0, 0), (0, 1, 0.2), (0, 2, 0.7)],
                           vdims=['y', 'alpha']).options(alpha='alpha')
     with self.assertRaises(Exception):
         mpl_renderer.get_plot(errorbars)