def test_errorbars_line_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(line_color='color') plot = bokeh_renderer.get_plot(errorbars) cds = plot.handles['cds'] glyph = plot.handles['glyph'] self.assertEqual(cds.data['line_color'], np.array(['#000', '#F00', '#0F0'])) self.assertEqual(glyph.line_color, {'field': 'line_color'})
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)
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) self.assertEqual(x_range.factors, ['A', 'B', 'C', 'D', 'E']) self.assertIsInstance(y_range, Range1d)
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 })
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 })
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 selectionxy = TestLinkSelections.get_value_with_key_type( lnk_sel._selection_expr_streams, hv.Points).input_streams[0].input_stream.input_streams[0] selectionxy.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]])
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])
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)
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)
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)
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)
def test_errorbar_test(self): errorbars = ErrorBars(([0, 1], [1, 2], [0.1, 0.2])) plot = mpl_renderer.get_plot(errorbars) plot.initialize_plot()