def test_dynamic_operation_init_renamed_stream_params(self): img = Image(sine_array(0, 5)) stream = RangeX(rename={'x_range': 'bin_range'}) histogram(img, bin_range=(0, 1), streams=[stream], dynamic=True) self.assertEqual(stream.x_range, (0, 1))
def test_colormapper_transparent_nan(self): img = Image(np.array( [[0, 1], [2, 3]])).options(clipping_colors={'NaN': 'transparent'}) plot = mpl_renderer.get_plot(img) cmap = plot.handles['artist'].cmap self.assertEqual(cmap._rgba_bad, (1.0, 1.0, 1.0, 0))
def test_layout_title_show_title_false(self): hmap1 = HoloMap({a: Image(np.random.rand(10, 10)) for a in range(3)}) hmap2 = HoloMap({a: Image(np.random.rand(10, 10)) for a in range(3)}) layout = Layout([hmap1, hmap2]).opts(plot=dict(show_title=False)) plot = bokeh_renderer.get_plot(layout) self.assertTrue('title' not in plot.handles)
def test_colormapper_unsigned_int(self): img = Image(np.array([[1, 1, 1, 2], [2, 2, 3, 4]]).astype('uint16')) plot = mpl_renderer.get_plot(img) artist = plot.handles['artist'] self.assertEqual(artist.get_clim(), (1, 4))
def test_colormapper_clims(self): img = Image(np.array([[0, 1], [2, 3]])).options(clims=(0, 4)) plot = mpl_renderer.get_plot(img) artist = plot.handles['artist'] self.assertEqual(artist.get_clim(), (0, 4))
def test_image_init(self): image = Image(self.array1) self.assertEqual(image.xdensity, 3) self.assertEqual(image.ydensity, 2)
def test_image_range_masked(self): arr = np.random.rand(10, 10) - 0.5 arr = np.ma.masked_where(arr <= 0, arr) rrange = Image(arr).range(2) self.assertEqual(rrange, (np.min(arr), np.max(arr)))
def test_deep_relabel_group(self): fn = lambda i: Image(sine_array(0, i)) dmap = DynamicMap(fn, kdims=['i']).relabel(group='Test') self.assertEqual(dmap[0].group, 'Test')
def callback(x, y): return NdLayout( {i: Image(np.array([[i, 1], [2, 3]])) for i in range(1, 3)})
def callback(x, y): return Image(np.array([[0, 1], [2, 3]])) + Image( np.array([[0, 1], [2, 3]]))
def callback(x, y): return Image(np.array([[0, 1], [2, 3]])) + Text(0, 0, 'Test')
def fn2(x, y): counter[0] += 1 return Image(np.random.rand(10, 10))
def test_dynamic_element_underlay(self): fn = lambda i: Image(sine_array(0, i)) dmap = DynamicMap(fn, kdims=['i']) dynamic_overlay = Image(sine_array(0, 10)) * dmap overlaid = Image(sine_array(0, 10)) * Image(sine_array(0, 5)) self.assertEqual(dynamic_overlay[5], overlaid)
def test_dynamic_operation_init_stream_params(self): img = Image(sine_array(0, 5)) stream = Stream.define('TestStream', bin_range=None)() histogram(img, bin_range=(0, 1), streams=[stream], dynamic=True) self.assertEqual(stream.bin_range, (0, 1))
def test_colormapper_min_max_colors(self): img = Image(np.array([[0, 1], [2, 3]])).options(clipping_colors={'min': 'red', 'max': 'blue'}) plot = bokeh_renderer.get_plot(img) cmapper = plot.handles['color_mapper'] self.assertEqual(cmapper.low_color, 'red') self.assertEqual(cmapper.high_color, 'blue')
def callback(): return GridSpace({(i, j): Image(np.array([[i, j], [2, 3]])) for i in range(1, 3) for j in range(1, 3)})
def test_custom_colorbar_ticker(self): ticker = LogTicker() img = Image(np.array([[0, 1], [2, 3]])).options(colorbar=True, colorbar_opts=dict(ticker=ticker)) plot = bokeh_renderer.get_plot(img) colorbar = plot.handles['colorbar'] self.assertIs(colorbar.ticker, ticker)
def test_redim_dimension_name(self): fn = lambda i: Image(sine_array(0, i)) dmap = DynamicMap(fn, kdims=['i']).redim(i='New') self.assertEqual(dmap.kdims[0].name, 'New')
def test_image_index(self): image = Image(self.array1) self.assertEqual(image[-.33, -0.25], 3)
def test_redim_dimension_range_aux(self): fn = lambda i: Image(sine_array(0, i)) dmap = DynamicMap(fn, kdims=['i']).redim.range(i=(0, 1)) self.assertEqual(dmap.kdims[0].range, (0, 1))
def test_empty_image(self): Image([]) Image(None) Image(np.array([])) Image(np.zeros((0, 0)))
def test_colormapper_symmetric(self): img = Image(np.array([[0, 1], [2, 3]])).options(symmetric=True) plot = bokeh_renderer.get_plot(img) cmapper = plot.handles['color_mapper'] self.assertEqual(cmapper.low, -3) self.assertEqual(cmapper.high, 3)
def test_colormapper_symmetric(self): img = Image(np.array([[0, 1], [2, 3]])).options(symmetric=True) plot = mpl_renderer.get_plot(img) artist = plot.handles['artist'] self.assertEqual(artist.get_clim(), (-3, 3))
def test_colormapper_logz_int_zero_bound(self): img = Image(np.array([[0, 1], [2, 3]])).options(logz=True) plot = bokeh_renderer.get_plot(img) cmapper = plot.handles['color_mapper'] self.assertEqual(cmapper.low, 1) self.assertEqual(cmapper.high, 3)
def test_colormapper_color_levels(self): img = Image(np.array([[0, 1], [2, 3]])).options(color_levels=5) plot = mpl_renderer.get_plot(img) artist = plot.handles['artist'] self.assertEqual(len(artist.cmap.colors), 5)
def test_colormapper_transparent_nan(self): img = Image(np.array([[0, 1], [2, 3]])).options(clipping_colors={'NaN': 'transparent'}) plot = bokeh_renderer.get_plot(img) cmapper = plot.handles['color_mapper'] self.assertEqual(cmapper.nan_color, 'rgba(0, 0, 0, 0)')
def test_layout_empty_subplots(self): layout = Curve(range(10)) + NdOverlay() + HoloMap() + HoloMap( {1: Image(np.random.rand(10, 10))}) plot = bokeh_renderer.get_plot(layout) self.assertEqual(len(plot.subplots.values()), 2)
def test_colormapper_cnorm_log(self): img = Image(np.array([[0, 1], [2, 3]])).options(cnorm='log') plot = bokeh_renderer.get_plot(img) cmapper = plot.handles['color_mapper'] self.assertTrue(cmapper, LogColorMapper)
def init_data(self): self.image = Image((self.xs, self.ys, self.array)) self.image_inv = Image( (self.xs[::-1], self.ys[::-1], self.array[::-1, ::-1]))
def test_dynamic_operation_on_hmap(self): hmap = HoloMap({i: Image(sine_array(0, i)) for i in range(10)}) dmap = Dynamic(hmap, operation=lambda x: x) self.assertEqual(dmap.kdims[0].name, hmap.kdims[0].name) self.assertEqual(dmap.kdims[0].values, hmap.keys())