예제 #1
0
 def test_label_size_op_update(self):
     labels = HoloMap({
         0: Labels([(0, 0, 8), (0, 1, 6), (0, 2, 12)],
                   vdims='size'),
         1: Labels([(0, 0, 9), (0, 1, 4), (0, 2, 3)],
                   vdims='size')}).options(size='size')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([a.get_fontsize() for a in artist], [8, 6, 12])
     plot.update((1,))
     artist = plot.handles['artist']
     self.assertEqual([a.get_fontsize() for a in artist], [9, 4, 3])
예제 #2
0
 def test_label_rotation_op_update(self):
     labels = HoloMap({
         0:
         Labels([(0, 0, 45), (0, 1, 180), (0, 2, 90)], vdims='rotation'),
         1:
         Labels([(0, 0, 30), (0, 1, 120), (0, 2, 60)], vdims='rotation')
     }).options(rotation='rotation')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([a.get_rotation() for a in artist], [45, 180, 90])
     plot.update((1, ))
     artist = plot.handles['artist']
     self.assertEqual([a.get_rotation() for a in artist], [30, 120, 60])
예제 #3
0
 def test_label_alpha_op_update(self):
     labels = HoloMap({
         0:
         Labels([(0, 0, 0.3), (0, 1, 1), (0, 2, 0.6)], vdims='alpha'),
         1:
         Labels([(0, 0, 0.6), (0, 1, 0.1), (0, 2, 1)], vdims='alpha')
     }).options(alpha='alpha')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([a.get_alpha() for a in artist], [0.3, 1, 0.6])
     plot.update((1, ))
     artist = plot.handles['artist']
     self.assertEqual([a.get_alpha() for a in artist], [0.6, 0.1, 1])
예제 #4
0
 def test_label_color_op_update(self):
     labels = HoloMap({
         0: Labels([(0, 0, '#000000'), (0, 1, '#FF0000'), (0, 2, '#00FF00')],
                   vdims='color'),
         1: Labels([(0, 0, '#FF0000'), (0, 1, '#00FF00'), (0, 2, '#0000FF')],
                   vdims='color')}).options(color='color')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([a.get_color() for a in artist],
                      ['#000000', '#FF0000', '#00FF00'])
     plot.update((1,))
     artist = plot.handles['artist']
     self.assertEqual([a.get_color() for a in artist],
                      ['#FF0000', '#00FF00', '#0000FF'])
예제 #5
0
 def test_labels_plot(self):
     text = Labels([(0, 0, 'Test')])
     plot = bokeh_renderer.get_plot(text)
     source = plot.handles['source']
     data = {'x': np.array([0]), 'y': np.array([0]), 'Label': ['Test']}
     for c, col in source.data.items():
         self.assertEqual(col, data[c])
예제 #6
0
 def test_label_alpha_op(self):
     labels = Labels([(0, 0, 0), (0, 1, 0.2), (0, 2, 0.7)],
                     vdims='alpha').options(alpha='alpha')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([a.get_alpha() for a in artist],
                      [0, 0.2, 0.7])
예제 #7
0
 def test_overlay_gridstyle_applies(self):
     grid_style = {'grid_line_color': 'blue', 'grid_line_width': 2}
     overlay = (Scatter([(10,10)]).options(gridstyle=grid_style, show_grid=True, size=20)
                * Labels([(10, 10, 'A')]))
     plot = bokeh_renderer.get_plot(overlay)
     self.assertEqual(plot.state.xgrid[0].grid_line_color, 'blue')
     self.assertEqual(plot.state.xgrid[0].grid_line_width, 2)
예제 #8
0
 def test_label_linear_color_op(self):
     labels = Labels([(0, 0, 0), (0, 1, 1), (0, 2, 2)],
                     vdims='color').options(color='color')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([rgb2hex(a.get_color()) for a in artist],
                      ['#440154', '#20908c', '#fde724'])
예제 #9
0
 def test_label_categorical_color_op(self):
     labels = Labels([(0, 0, 'A'), (0, 1, 'B'), (0, 2, 'A')],
                     vdims='color').options(color='color', cmap='tab10')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([rgb2hex(a.get_color()) for a in artist],
                      ['#1f77b4', '#ff7f0e', '#1f77b4'])
예제 #10
0
 def test_label_color_op(self):
     labels = Labels([(0, 0, '#000000'), (0, 1, '#FF0000'), (0, 2, '#00FF00')],
                     vdims='color').options(color='color')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([a.get_color() for a in artist],
                      ['#000000', '#FF0000', '#00FF00'])
예제 #11
0
    def test_labels_inverted(self):
        labels = Tiles("") * Labels([(0, 3, 0), (1, 2, 1),
                                     (2, 1, 1)]).options(invert_axes=True)
        with self.assertRaises(ValueError) as e:
            self._get_plot_state(labels)

        self.assertIn("invert_axes", str(e.exception))
예제 #12
0
 def test_label_rotation_op(self):
     labels = Labels([(0, 0, 90), (0, 1, 180), (0, 2, 270)],
                     vdims='rotation').options(rotation='rotation')
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     self.assertEqual([a.get_rotation() for a in artist],
                      [90, 180, 270])
예제 #13
0
 def test_label_font_size_op_ints(self):
     labels = Labels([(0, 0, 10), (0, 1, 4), (0, 2, 8)],
                     vdims='size').options(text_font_size='size')
     plot = bokeh_renderer.get_plot(labels)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     self.assertEqual(cds.data['text_font_size'], ['10pt', '4pt', '8pt'])
     self.assertEqual(glyph.text_font_size, {'field': 'text_font_size'})
예제 #14
0
 def test_label_alpha_op(self):
     labels = Labels([(0, 0, 0), (0, 1, 0.2), (0, 2, 0.7)],
                     vdims='alpha').options(text_alpha='alpha')
     plot = bokeh_renderer.get_plot(labels)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     self.assertEqual(cds.data['text_alpha'], np.array([0, 0.2, 0.7]))
     self.assertEqual(glyph.text_alpha, {'field': 'text_alpha'})
예제 #15
0
 def test_label_angle_op(self):
     labels = Labels([(0, 0, 0), (0, 1, 45), (0, 2, 90)],
                     vdims='angle').options(angle='angle')
     plot = bokeh_renderer.get_plot(labels)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     self.assertEqual(cds.data['angle'], np.array([0, 0.785398, 1.570796]))
     self.assertEqual(glyph.angle, {'field': 'angle'})
예제 #16
0
 def test_label_color_op(self):
     labels = Labels([(0, 0, '#000'), (0, 1, '#F00'), (0, 2, '#0F0')],
                     vdims='color').options(text_color='color')
     plot = bokeh_renderer.get_plot(labels)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     self.assertEqual(cds.data['text_color'], np.array(['#000', '#F00', '#0F0']))
     self.assertEqual(glyph.text_color, {'field': 'text_color'})
예제 #17
0
 def test_labels_inverted(self):
     labels = Labels([(0, 1, 'A'), (1, 0, 'B')]).options(invert_axes=True)
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     expected = {'x': np.array([0, 1]), 'y': np.array([1, 0]), 'Label': ['A', 'B']}
     for i, text in enumerate(artist):
         self.assertEqual(text._x, expected['y'][i])
         self.assertEqual(text._y, expected['x'][i])
         self.assertEqual(text.get_text(), expected['Label'][i])
예제 #18
0
 def test_labels_color_index_color_clash(self):
     labels = Labels([(0, 0, 0), (0, 1, 1), (0, 2, 2)],
                     vdims='color').options(text_color='color', color_index='color')
     with ParamLogStream() as log:
         bokeh_renderer.get_plot(labels)
     log_msg = log.stream.read()
     warning = ("Cannot declare style mapping for 'text_color' option "
                "and declare a color_index; ignoring the color_index.\n")
     self.assertEqual(log_msg, warning)
예제 #19
0
 def test_label_categorical_color_op(self):
     labels = Labels([(0, 0, 'A'), (0, 1, 'B'), (0, 2, 'C')],
                     vdims='color').options(text_color='color')
     plot = bokeh_renderer.get_plot(labels)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     cmapper = plot.handles['text_color_color_mapper']
     self.assertTrue(cmapper, CategoricalColorMapper)
     self.assertEqual(cmapper.factors, ['A', 'B', 'C'])
     self.assertEqual(cds.data['text_color'], np.array(['A', 'B', 'C']))
     self.assertEqual(glyph.text_color, {'field': 'text_color', 'transform': cmapper})
예제 #20
0
 def test_labels_formatter(self):
     vdim = Dimension('text', value_format=lambda x: '%.1f' % x)
     labels = Labels([(0, 1, 0.33333), (1, 0, 0.66666)], vdims=vdim)
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     expected = {'x': np.array([0, 1]), 'y': np.array([1, 0]),
                 'text': ['0.3', '0.7']}
     for i, text in enumerate(artist):
         self.assertEqual(text._x, expected['x'][i])
         self.assertEqual(text._y, expected['y'][i])
         self.assertEqual(text.get_text(), expected['text'][i])
예제 #21
0
 def test_labels_state(self):
     labels = Labels([(0, 3, 0), (1, 2, 1), (2, 1, 1)])
     state = self._get_plot_state(labels)
     self.assertEqual(state['data'][0]['x'], np.array([0, 1, 2]))
     self.assertEqual(state['data'][0]['y'], np.array([3, 2, 1]))
     self.assertEqual(state['data'][0]['text'], ['0', '1', '1'])
     self.assertEqual(state['data'][0]['mode'], 'text')
     self.assertEqual(state['layout']['xaxis']['range'], [0, 2])
     self.assertEqual(state['layout']['yaxis']['range'], [1, 3])
     self.assertEqual(state['layout']['xaxis']['title'], 'x')
     self.assertEqual(state['layout']['yaxis']['title'], 'y')
예제 #22
0
 def test_labels_empty(self):
     labels = Labels([])
     plot = bokeh_renderer.get_plot(labels)
     source = plot.handles['source']
     glyph = plot.handles['glyph']
     expected = {'x': np.array([]), 'y': np.array([]), 'Label': []}
     for k, vals in expected.items():
         self.assertEqual(source.data[k], vals)
     self.assertEqual(glyph.x, 'x')
     self.assertEqual(glyph.y, 'y')
     self.assertEqual(glyph.text, 'Label')
예제 #23
0
 def test_labels_inverted(self):
     labels = Labels([(0, 1, 'A'), (1, 0, 'B')]).options(invert_axes=True)
     plot = bokeh_renderer.get_plot(labels)
     source = plot.handles['source']
     glyph = plot.handles['glyph']
     expected = {'x': np.array([0, 1]), 'y': np.array([1, 0]), 'Label': ['A', 'B']}
     for k, vals in expected.items():
         self.assertEqual(source.data[k], vals)
     self.assertEqual(glyph.x, 'y')
     self.assertEqual(glyph.y, 'x')
     self.assertEqual(glyph.text, 'Label')
예제 #24
0
 def test_label_linear_color_op(self):
     labels = Labels([(0, 0, 0), (0, 1, 1), (0, 2, 2)],
                     vdims='color').options(text_color='color')
     plot = bokeh_renderer.get_plot(labels)
     cds = plot.handles['cds']
     glyph = plot.handles['glyph']
     cmapper = plot.handles['text_color_color_mapper']
     self.assertTrue(cmapper, LinearColorMapper)
     self.assertEqual(cmapper.low, 0)
     self.assertEqual(cmapper.high, 2)
     self.assertEqual(cds.data['text_color'], np.array([0, 1, 2]))
     self.assertEqual(glyph.text_color, {'field': 'text_color', 'transform': cmapper})
예제 #25
0
 def test_labels_yoffset(self):
     offset = 20000
     labels = Tiles("") * Labels([(self.xs[0], self.ys[0], 'A'),
                                  (self.xs[1], self.ys[1], 'B'),
                                  (self.xs[2], self.ys[2], 'C')
                                  ]).options(yoffset=offset)
     state = self._get_plot_state(labels)
     lons, lats = Tiles.easting_northing_to_lon_lat(
         self.xs,
         np.array(self.ys) + offset)
     self.assertEqual(state['data'][1]['lon'], lons)
     self.assertEqual(state['data'][1]['lat'], lats)
예제 #26
0
 def test_labels_formatter(self):
     vdim = Dimension('text', value_format=lambda x: '%.1f' % x)
     labels = Labels([(0, 1, 0.33333), (1, 0, 0.66666)], vdims=vdim)
     plot = bokeh_renderer.get_plot(labels)
     source = plot.handles['source']
     glyph = plot.handles['glyph']
     expected = {'x': np.array([0, 1]), 'y': np.array([1, 0]),
                 'text': ['0.3', '0.7']}
     for k, vals in expected.items():
         self.assertEqual(source.data[k], vals)
     self.assertEqual(glyph.x, 'x')
     self.assertEqual(glyph.y, 'y')
     self.assertEqual(glyph.text, 'text')
예제 #27
0
 def test_labels_color_mapped(self):
     labels = Labels([(0, 1, 0.33333), (1, 0, 0.66666)]).options(color_index=2)
     plot = mpl_renderer.get_plot(labels)
     artist = plot.handles['artist']
     expected = {'x': np.array([0, 1]), 'y': np.array([1, 0]),
                 'Label': ['0.33333', '0.66666']}
     colors = [(0.26666666666666666, 0.0039215686274509803, 0.32941176470588235, 1.0),
               (0.99215686274509807, 0.90588235294117647, 0.14117647058823529, 1.0)]
     for i, text in enumerate(artist):
         self.assertEqual(text._x, expected['x'][i])
         self.assertEqual(text._y, expected['y'][i])
         self.assertEqual(text.get_text(), expected['Label'][i])
         self.assertEqual(text.get_color(), colors[i])
예제 #28
0
 def test_labels_state(self):
     labels = Tiles("") * Labels([
         (self.xs[0], self.ys[0], 'A'), (self.xs[1], self.ys[1], 'B'),
         (self.xs[2], self.ys[2], 'C')
     ]).redim.range(x=self.x_range, y=self.y_range)
     state = self._get_plot_state(labels)
     self.assertEqual(state['data'][1]['lon'], self.lons)
     self.assertEqual(state['data'][1]['lat'], self.lats)
     self.assertEqual(state['data'][1]['text'], ['A', 'B', 'C'])
     self.assertEqual(state['data'][1]['mode'], 'text')
     self.assertEqual(state['layout']['mapbox']['center'], {
         'lat': self.lat_center,
         'lon': self.lon_center
     })
예제 #29
0
 def test_labels_color_mapped(self):
     labels = Labels([(0, 1, 0.33333, 2), (1, 0, 0.66666, 1)], vdims=['text', 'color']).options(color_index=3)
     plot = bokeh_renderer.get_plot(labels)
     source = plot.handles['source']
     glyph = plot.handles['glyph']
     cmapper = plot.handles['color_mapper']
     expected = {'x': np.array([0, 1]), 'y': np.array([1, 0]),
                 'text': ['0.33333', '0.66666'],
                 'color': np.array([2, 1])}
     for k, vals in expected.items():
         self.assertEqual(source.data[k], vals)
     self.assertEqual(glyph.x, 'x')
     self.assertEqual(glyph.y, 'y')
     self.assertEqual(glyph.text, 'text')
     self.assertEqual(glyph.text_color, {'field': 'color', 'transform': cmapper})
     self.assertEqual(cmapper.low, 1)
     self.assertEqual(cmapper.high, 2)
예제 #30
0
 def test_labels_color_mapped(self):
     labels = Labels([(0, 1, 0.33333),
                      (1, 0, 0.66666)]).options(color_index=2)
     plot = bokeh_renderer.get_plot(labels)
     source = plot.handles['source']
     glyph = plot.handles['glyph']
     cmapper = plot.handles['color_mapper']
     expected = {
         'x': np.array([0, 1]),
         'y': np.array([1, 0]),
         'Label': ['0.33333', '0.66666'],
         'text_color': np.array([0.33333, 0.66666])
     }
     for k, vals in expected.items():
         self.assertEqual(source.data[k], vals)
     self.assertEqual(glyph.x, 'x')
     self.assertEqual(glyph.y, 'y')
     self.assertEqual(glyph.text, 'Label')
     self.assertEqual(cmapper.low, 0.33333)
     self.assertEqual(cmapper.high, 0.66666)