コード例 #1
0
 def test_boxwhisker_simple_overlay(self):
     values = np.random.rand(100)
     boxwhisker = BoxWhisker(values) * BoxWhisker(values)
     plot = mpl_renderer.get_plot(boxwhisker)
     p1, p2 = plot.subplots.values()
     self.assertEqual(p1.handles['boxes'][0].get_path().vertices,
                      p2.handles['boxes'][0].get_path().vertices)
コード例 #2
0
 def test_box_whisker_cats_index_cols(self):
     box_whisker = BoxWhisker((['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'C', 'C'], list(range(10))), 'x', 'y')
     expr, bbox, region = box_whisker._get_selection_expr_for_stream_value(
         bounds=(0, 1, 2, 7), x_selection=['A', 'B'], index_cols=['x']
     )
     self.assertEqual(bbox, {'y': (1, 7), 'x': ['A', 'B']})
     self.assertEqual(expr.apply(box_whisker), np.array([
         True, True, True, True, True, False, False, False, False, False
     ]))
     self.assertEqual(region, None)
コード例 #3
0
 def test_box_whisker_single_inverted(self):
     box = BoxWhisker(list(range(10))).opts(invert_axes=True)
     expr, bbox, region = box._get_selection_expr_for_stream_value(
         bounds=(3, 0, 7, 1)
     )
     self.assertEqual(bbox, {'y': (3, 7)})
     self.assertEqual(expr.apply(box), np.array([
         False, False, False, True, True, True, True, True, False, False
     ]))
     self.assertEqual(region, NdOverlay({0: VSpan(3, 7)}))
コード例 #4
0
 def test_box_whisker_single(self):
     box_whisker = BoxWhisker(list(range(10)))
     expr, bbox, region = box_whisker._get_selection_expr_for_stream_value(
         bounds=(0, 3, 1, 7)
     )
     self.assertEqual(bbox, {'y': (3, 7)})
     self.assertEqual(expr.apply(box_whisker), np.array([
         False, False, False, True, True, True, True, True, False, False
     ]))
     self.assertEqual(region, NdOverlay({0: HSpan(3, 7)}))
コード例 #5
0
 def test_box_whisker_hover(self):
     xs, ys = np.random.randint(0, 5, 100), np.random.randn(100)
     box = BoxWhisker((xs, ys), 'A').sort().opts(plot=dict(tools=['hover']))
     plot = bokeh_renderer.get_plot(box)
     src = plot.handles['vbar_1_source']
     ys = box.aggregate(function=np.median).dimension_values('y')
     hover_tool = plot.handles['hover']
     self.assertEqual(src.data['y'], ys)
     self.assertIn(plot.handles['vbar_1_glyph_renderer'], hover_tool.renderers)
     self.assertIn(plot.handles['vbar_2_glyph_renderer'], hover_tool.renderers)
     self.assertIn(plot.handles['circle_1_glyph_renderer'], hover_tool.renderers)
コード例 #6
0
 def test_boxwhisker_simple(self):
     values = np.random.rand(100)
     boxwhisker = BoxWhisker(values)
     plot = mpl_renderer.get_plot(boxwhisker)
     data, style, axis_opts = plot.get_data(boxwhisker, {}, {})
     self.assertEqual(data[0][0], values)
     self.assertEqual(style['labels'], [''])
コード例 #7
0
 def test_box_whisker_datetime(self):
     times = np.arange(dt.datetime(2017,1,1), dt.datetime(2017,2,1),
                       dt.timedelta(days=1))
     box = BoxWhisker((times, np.random.rand(len(times))), kdims=['Date'])
     plot = bokeh_renderer.get_plot(box)
     formatted = [box.kdims[0].pprint_value(t) for t in times]
     self.assertTrue(all(cds.data['index'][0] in formatted for cds in
                         plot.state.select(ColumnDataSource)
                         if len(cds.data.get('index', []))))
コード例 #8
0
 def test_box_whisker_multi_level(self):
     box = BoxWhisker(
         (['A', 'B'] * 15, [3, 10, 1] * 10, np.random.randn(30)),
         ['Group', 'Category'], 'Value')
     plot = bokeh_renderer.get_plot(box)
     x_range = plot.handles['x_range']
     self.assertEqual(x_range.factors, [('A', '1'), ('A', '3'), ('A', '10'),
                                        ('B', '1'), ('B', '3'),
                                        ('B', '10')])
コード例 #9
0
 def test_boxwhisker_single(self):
     box = BoxWhisker([1, 1, 2, 3, 3, 4, 5, 5])
     state = self._get_plot_state(box)
     self.assertEqual(len(state['data']), 1)
     self.assertEqual(state['data'][0]['type'], 'box')
     self.assertEqual(state['data'][0]['name'], '')
     self.assertEqual(state['data'][0]['y'], np.array([1, 1, 2, 3, 3, 4, 5, 5]))
     self.assertEqual(state['layout']['xaxis'], {})
     self.assertEqual(state['layout']['yaxis']['range'], [1, 5])
     self.assertEqual(state['layout']['yaxis']['title'], 'y')
コード例 #10
0
 def test_boxwhisker_single_invert_axes(self):
     box = BoxWhisker([1, 1, 2, 3, 3, 4, 5, 5]).options(invert_axes=True)
     state = self._get_plot_state(box)
     self.assertEqual(len(state['data']), 1)
     self.assertEqual(state['data'][0]['type'], 'box')
     self.assertEqual(state['data'][0]['name'], '')
     self.assertEqual(state['data'][0]['x'], np.array([1, 1, 2, 3, 3, 4, 5, 5]))
     self.assertEqual(state['layout'].get('yaxis', {}), {})
     self.assertEqual(state['layout']['xaxis']['range'], [1, 5])
     self.assertEqual(state['layout']['xaxis']['title']['text'], 'y')
コード例 #11
0
 def test_box_whisker_alpha_op(self):
     a = np.repeat(np.arange(5), 5)
     b = np.repeat(np.arange(5) / 10., 5)
     box = BoxWhisker((a, b, np.arange(25)), ['a', 'b'],
                      'd').options(box_alpha='b')
     plot = bokeh_renderer.get_plot(box)
     source = plot.handles['vbar_1_source']
     glyph = plot.handles['vbar_1_glyph']
     self.assertEqual(source.data['box_alpha'], np.arange(5) / 10.)
     self.assertEqual(glyph.fill_alpha, {'field': 'box_alpha'})
コード例 #12
0
 def test_boxwhisker_multi(self):
     box = BoxWhisker((['A']*8+['B']*8, [1, 1, 2, 3, 3, 4, 5, 5]*2), 'x', 'y')
     state = self._get_plot_state(box)
     self.assertEqual(len(state['data']), 2)
     self.assertEqual(state['data'][0]['type'], 'box')
     self.assertEqual(state['data'][0]['name'], 'A')
     self.assertEqual(state['data'][0]['y'], np.array([1, 1, 2, 3, 3, 4, 5, 5]))
     self.assertEqual(state['data'][1]['type'], 'box')
     self.assertEqual(state['data'][1]['name'], 'B')
     self.assertEqual(state['data'][1]['y'], np.array([1, 1, 2, 3, 3, 4, 5, 5]))
     self.assertEqual(state['layout']['xaxis']['title'], 'x')
     self.assertEqual(state['layout']['yaxis']['range'], [1, 5])
     self.assertEqual(state['layout']['yaxis']['title'], 'y')
コード例 #13
0
 def test_box_whisker_categorical_color_op(self):
     a = np.repeat(np.arange(5), 5)
     b = np.repeat(['A', 'B', 'C', 'D', 'E'], 5)
     box = BoxWhisker((a, b, np.arange(25)), ['a', 'b'],
                      'd').options(box_color='b')
     plot = bokeh_renderer.get_plot(box)
     source = plot.handles['vbar_1_source']
     glyph = plot.handles['vbar_1_glyph']
     cmapper = plot.handles['box_color_color_mapper']
     self.assertEqual(source.data['box_color'], b[::5])
     self.assertTrue(cmapper, CategoricalColorMapper)
     self.assertEqual(cmapper.factors, ['A', 'B', 'C', 'D', 'E'])
     self.assertEqual(glyph.fill_color, {
         'field': 'box_color',
         'transform': cmapper
     })
コード例 #14
0
 def test_box_whisker_linear_color_op(self):
     a = np.repeat(np.arange(5), 5)
     b = np.repeat(np.arange(5), 5)
     box = BoxWhisker((a, b, np.arange(25)), ['a', 'b'],
                      'd').options(box_color='b')
     plot = bokeh_renderer.get_plot(box)
     source = plot.handles['vbar_1_source']
     cmapper = plot.handles['box_color_color_mapper']
     glyph = plot.handles['vbar_1_glyph']
     self.assertEqual(source.data['box_color'], np.arange(5))
     self.assertTrue(cmapper, LinearColorMapper)
     self.assertEqual(cmapper.low, 0)
     self.assertEqual(cmapper.high, 4)
     self.assertEqual(glyph.fill_color, {
         'field': 'box_color',
         'transform': cmapper
     })
コード例 #15
0
 def test_visible(self):
     element = BoxWhisker(([3, 2, 1], [0, 1, 2])).options(visible=False)
     state = self._get_plot_state(element)
     self.assertEqual(state['data'][0]['visible'], False)
コード例 #16
0
 def test_box_whisker_padding_square(self):
     curve = BoxWhisker([1, 2, 3]).options(padding=0.1)
     plot = bokeh_renderer.get_plot(curve)
     y_range = plot.handles['y_range']
     self.assertEqual(y_range.start, 0.8)
     self.assertEqual(y_range.end, 3.2)
コード例 #17
0
 def test_box_whisker_padding_square(self):
     curve = BoxWhisker([1, 2, 3]).options(padding=0.1)
     plot = mpl_renderer.get_plot(curve)
     y_range = plot.handles['axis'].get_ylim()
     self.assertEqual(y_range[0], 0.8)
     self.assertEqual(y_range[1], 3.2)