コード例 #1
0
ファイル: testoptions.py プロジェクト: basnijholt/holoviews
 def test_mpl_bokeh_mpl_via_dict_backend_keyword(self):
     curve = Curve([1,2,3])
     styled_mpl = curve.opts({'Curve': dict(color='red')}, backend='matplotlib')
     styled = styled_mpl.opts({'Curve': dict(color='green')}, backend='bokeh')
     mpl_lookup = Store.lookup_options('matplotlib', styled, 'style')
     self.assertEqual(mpl_lookup.kwargs['color'], 'red')
     bokeh_lookup = Store.lookup_options('bokeh', styled, 'style')
     self.assertEqual(bokeh_lookup.kwargs['color'], 'green')
コード例 #2
0
 def test_render_to_png(self):
     curve = Curve([])
     renderer = BokehRenderer.instance(fig='png')
     try:
         png, info = renderer(curve)
     except RuntimeError:
         raise SkipTest("Test requires selenium")
     self.assertIsInstance(png, bytes)
     self.assertEqual(info['file-ext'], 'png')
コード例 #3
0
ファイル: testoptions.py プロジェクト: basnijholt/holoviews
    def test_mpl_bokeh_output_options_group_expandable(self):
        original_allowed_kws = Options._output_allowed_kws[:]
        Options._output_allowed_kws = ['backend', 'file_format_example']
        # Re-register
        Store.register({Curve: plotting.mpl.CurvePlot}, 'matplotlib')
        Store.register({Curve: plotting.bokeh.CurvePlot}, 'bokeh')

        curve_bk = Options('Curve', backend='bokeh', color='blue')
        curve_mpl = Options('Curve', backend='matplotlib', color='red',
                            file_format_example='SVG')
        c = Curve([1,2,3])
        styled = c.opts(curve_bk, curve_mpl)
        self.assertEqual(Store.lookup_options('matplotlib', styled, 'output').kwargs,
                         {'backend':'matplotlib', 'file_format_example':'SVG'})

        self.assertEqual(Store.lookup_options('bokeh', styled, 'output').kwargs,
                         {})
        Options._output_allowed_kws = original_allowed_kws
コード例 #4
0
 def test_store_render_combined(self):
     curve = Curve([1, 2, 3])
     data, metadata = Store.render(curve)
     mime_types = {
         'text/html', 'application/javascript',
         'application/vnd.holoviews_exec.v0+json', 'image/svg+xml',
         'image/png'
     }
     self.assertEqual(set(data), mime_types)
コード例 #5
0
 def test_aggregate_with_spreadfn(self):
     with DatatypeContext([self.datatype, 'dictionary', 'dataframe'],
                          self.image):
         agg = self.image.aggregate('x', np.mean, np.std)
     xs = self.image.dimension_values('x', expanded=False)
     mean = self.array.mean(axis=0)
     std = self.array.std(axis=0)
     self.assertEqual(
         agg, Curve((xs, mean, std), kdims=['x'], vdims=['z', 'z_std']))
コード例 #6
0
 def test_pre_and_postprocess_hooks(self):
     pre_backup = operation._preprocess_hooks
     post_backup = operation._postprocess_hooks
     operation._preprocess_hooks = [lambda op, x: {'label': str(x.id)}]
     operation._postprocess_hooks = [lambda op, x, **kwargs: x.clone(**kwargs)]
     curve = Curve([1, 2, 3])
     self.assertEqual(operation(curve).label, str(curve.id))
     operation._preprocess_hooks = pre_backup
     operation._postprocess_hooks = post_backup
コード例 #7
0
ファイル: analysis.py プロジェクト: toddrme2178/EarthSim
    def _sample(self, obj, data):
        """
        Rasterizes the supplied object in the current region
        and samples it with the drawn paths returning an
        NdOverlay of Curves.

        Note: Because the function returns an NdOverlay containing
        a variable number of elements batching must be enabled and
        the legend_limit must be set to 0.
        """
        if self.path_stream.data is None:
            path = self.path
        else:
            path = self.path_stream.element
        if isinstance(obj, TriMesh):
            vdim = obj.nodes.vdims[0]
        else:
            vdim = obj.vdims[0]
        if len(path) > 2:
            x_range = path.range(0)
            y_range = path.range(1)
        else:
            return NdOverlay({0: Curve([], 'Distance', vdim)})

        (x0, x1), (y0, y1) = x_range, y_range
        width, height = (max([min([(x1 - x0) / self.resolution, 500]), 10]),
                         max([min([(y1 - y0) / self.resolution, 500]), 10]))
        raster = rasterize(obj,
                           x_range=x_range,
                           y_range=y_range,
                           aggregator=self.aggregator,
                           width=int(width),
                           height=int(height),
                           dynamic=False)
        x, y = raster.kdims
        sections = []
        for g in path.geom():
            xs, ys, distance = self._gen_samples(g)
            indexes = {x.name: xs, y.name: ys}
            points = raster.data.sel_points(method='nearest',
                                            **indexes).to_dataframe()
            points['Distance'] = distance
            sections.append(Curve(points, 'Distance', vdims=[vdim, x, y]))
        return NdOverlay(dict(enumerate(sections)))
コード例 #8
0
ファイル: testdatashader.py プロジェクト: JulianDekker/DOVAL
 def test_aggregate_ndoverlay_count_cat_datetimes_microsecond_timebase(self):
     dates = pd.date_range(start="2016-01-01", end="2016-01-03", freq='1D')
     xstart = np.datetime64('2015-12-31T23:59:59.723518000', 'us')
     xend = np.datetime64('2016-01-03T00:00:00.276482000', 'us')
     curve = Curve((dates, [1, 2, 3]))
     curve2 = Curve((dates, [3, 2, 1]))
     ndoverlay = NdOverlay({0: curve, 1: curve2}, 'Cat')
     imgs = aggregate(ndoverlay, aggregator=ds.count_cat('Cat'), width=2, height=2,
                      x_range=(xstart, xend), dynamic=False)
     bounds = (np.datetime64('2015-12-31T23:59:59.723518'), 1.0,
               np.datetime64('2016-01-03T00:00:00.276482'), 3.0)
     dates = [np.datetime64('2016-01-01T11:59:59.861759000',),
              np.datetime64('2016-01-02T12:00:00.138241000')]
     expected = Image((dates, [1.5, 2.5], [[1, 0], [0, 2]]),
                      datatype=['xarray'], bounds=bounds, vdims='Count')
     expected2 = Image((dates, [1.5, 2.5], [[0, 1], [1, 1]]),
                      datatype=['xarray'], bounds=bounds, vdims='Count')
     self.assertEqual(imgs[0], expected)
     self.assertEqual(imgs[1], expected2)
コード例 #9
0
        def plot_function(data):
            nonlocal keys
            curves = []
            keys = data.fields.data_vars if keys == "all" else keys

            for var in keys if not isinstance(keys, str) else [keys]:
                displayed_field = data.fields[var]
                if displayed_field.dims != ('x', ):
                    continue
                curves.append(Curve((displayed_field.squeeze())))
            return Layout(curves).cols(1)
コード例 #10
0
 def test_rasterize_curve(self):
     curve = Curve([(0.2, 0.3), (0.4, 0.7), (0.8, 0.99)])
     expected = Image(([0.25, 0.75], [0.25, 0.75], [[1, 0], [1, 1]]),
                      vdims=['Count'])
     img = rasterize(curve,
                     dynamic=False,
                     x_range=(0, 1),
                     y_range=(0, 1),
                     width=2,
                     height=2)
     self.assertEqual(img, expected)
コード例 #11
0
 def test_render_holomap_individual(self):
     hmap = HoloMap({i: Curve([1, 2, i]) for i in range(5)})
     obj, _ = self.renderer._validate(hmap, None)
     self.assertIsInstance(obj, pn.pane.HoloViews)
     self.assertEqual(obj.center, True)
     self.assertEqual(obj.widget_location, 'right')
     self.assertEqual(obj.widget_type, 'individual')
     widgets = obj.layout.select(DiscreteSlider)
     self.assertEqual(len(widgets), 1)
     slider = widgets[0]
     self.assertEqual(slider.options, OrderedDict([(str(i), i) for i in range(5)]))
コード例 #12
0
 def test_theme_rendering(self):
     theme = Theme(
         json={'attrs': {
             'Figure': {
                 'outline_line_color': '#444444'
             }
         }})
     self.renderer.theme = theme
     plot = self.renderer.get_plot(Curve([]))
     self.renderer.components(plot, 'html')
     self.assertEqual(plot.state.outline_line_color, '#444444')
コード例 #13
0
 def setUp(self):
     self.xs = np.linspace(0, 2 * np.pi, 11)
     self.hxs = np.arange(len(self.xs))
     self.sin = np.sin(self.xs)
     self.cos = np.cos(self.xs)
     sine_data = np.column_stack((self.xs, self.sin))
     cos_data = np.column_stack((self.xs, self.cos))
     self.curve = Curve(sine_data)
     self.path = Path([sine_data, cos_data])
     self.histogram = Histogram((self.hxs, self.sin))
     super(ElementConstructorTest, self).setUp()
コード例 #14
0
ファイル: testdatashader.py プロジェクト: JulianDekker/DOVAL
 def test_aggregate_dt_xaxis_constant_yaxis(self):
     df = pd.DataFrame({'y': np.ones(100)}, index=pd.date_range('1980-01-01', periods=100, freq='1T'))
     img = rasterize(Curve(df), dynamic=False)
     xs = np.array(['1980-01-01T00:16:30.000000', '1980-01-01T00:49:30.000000',
                    '1980-01-01T01:22:30.000000'], dtype='datetime64[us]')
     ys = np.array([])
     bounds = (np.datetime64('1980-01-01T00:00:00.000000'), 1.0,
               np.datetime64('1980-01-01T01:39:00.000000'), 1.0)
     expected = Image((xs, ys, np.empty((0, 3))), ['index', 'y'], 'Count',
                      xdensity=1, ydensity=1, bounds=bounds)
     self.assertEqual(img, expected)
コード例 #15
0
ファイル: testdatashader.py プロジェクト: JulianDekker/DOVAL
 def test_aggregate_curve_datetimes(self):
     dates = pd.date_range(start="2016-01-01", end="2016-01-03", freq='1D')
     curve = Curve((dates, [1, 2, 3]))
     img = aggregate(curve, width=2, height=2, dynamic=False)
     bounds = (np.datetime64('2016-01-01T00:00:00.000000'), 1.0,
               np.datetime64('2016-01-03T00:00:00.000000'), 3.0)
     dates = [np.datetime64('2016-01-01T12:00:00.000000000'),
              np.datetime64('2016-01-02T12:00:00.000000000')]
     expected = Image((dates, [1.5, 2.5], [[1, 0], [0, 2]]),
                      datatype=['xarray'], bounds=bounds, vdims='Count')
     self.assertEqual(img, expected)
コード例 #16
0
ファイル: testrenderer.py プロジェクト: zbarry/holoviews
 def test_theme_rendering(self):
     theme = Theme(
         json={'attrs': {
             'Figure': {
                 'outline_line_color': '#444444'
             }
         }})
     renderer = BokehRenderer.instance(fig='png')
     renderer.theme = theme
     plot = renderer.get_plot(Curve([]))
     renderer(plot)
     self.assertEqual(plot.state.outline_line_color, '#444444')
コード例 #17
0
    def test_render_dynamicmap_with_stream(self):
        stream = Stream.define(str('Custom'), y=2)()
        dmap = DynamicMap(lambda y: Curve([1, 2, y]), kdims=['y'], streams=[stream])
        obj, _ = self.renderer._validate(dmap, None)
        self.renderer.components(obj)
        [(plot, pane)] = obj._plots.values()

        y = plot.handles['fig']['data'][0]['y']
        self.assertEqual(y[2], 2)
        stream.event(y=3)
        y = plot.handles['fig']['data'][0]['y']
        self.assertEqual(y[2], 3)
コード例 #18
0
    def test_render_dynamicmap_with_dims(self):
        dmap = DynamicMap(lambda y: Curve([1, 2, y]),
                          kdims=['y']).redim.range(y=(0.1, 5))
        obj, _ = self.renderer._validate(dmap, None)
        self.renderer.components(obj)
        [(plot, pane)] = obj._plots.values()
        cds = plot.handles['cds']

        self.assertEqual(cds.data['y'][2], 0.1)
        slider = obj.layout.select(FloatSlider)[0]
        slider.value = 3.1
        self.assertEqual(cds.data['y'][2], 3.1)
コード例 #19
0
 def test_render_holomap_scrubber(self):
     hmap = HoloMap({i: Curve([1, 2, i]) for i in range(5)})
     obj, _ = self.renderer._validate(hmap, 'scrubber')
     self.assertIsInstance(obj, pn.pane.HoloViews)
     self.assertEqual(obj.center, True)
     self.assertEqual(obj.widget_location, 'bottom')
     self.assertEqual(obj.widget_type, 'scrubber')
     widgets = obj.layout.select(Player)
     self.assertEqual(len(widgets), 1)
     player = widgets[0]
     self.assertEqual(player.start, 0)
     self.assertEqual(player.end, 4)
コード例 #20
0
ファイル: testdatashader.py プロジェクト: JulianDekker/DOVAL
 def test_aggregate_curve_datetimes_microsecond_timebase(self):
     dates = pd.date_range(start="2016-01-01", end="2016-01-03", freq='1D')
     xstart = np.datetime64('2015-12-31T23:59:59.723518000', 'us')
     xend = np.datetime64('2016-01-03T00:00:00.276482000', 'us')
     curve = Curve((dates, [1, 2, 3]))
     img = aggregate(curve, width=2, height=2, x_range=(xstart, xend), dynamic=False)
     bounds = (np.datetime64('2015-12-31T23:59:59.723518'), 1.0,
               np.datetime64('2016-01-03T00:00:00.276482'), 3.0)
     dates = [np.datetime64('2016-01-01T11:59:59.861759000',),
              np.datetime64('2016-01-02T12:00:00.138241000')]
     expected = Image((dates, [1.5, 2.5], [[1, 0], [0, 2]]),
                      datatype=['xarray'], bounds=bounds, vdims='Count')
     self.assertEqual(img, expected)
コード例 #21
0
    def view_scatter(self):
        # print('view_scatter')
        if self.scatter_toggle and not self.scatter.empty:

            return self.scatter_pts.apply.opts(
                color_index='z',
                cmap=self.cmap_opts.param.colormap,
                clim=self.display_range.param.color_range,
                colorbar=True,
                marker='o',
                line_color=None)
        else:
            return Curve([])
コード例 #22
0
 def test_theme_rendering(self):
     theme = Theme(
         json={
     'attrs' : {
         'Figure' : {
             'outline_line_color': '#444444'}
     }
         })
     self.renderer.theme = theme
     plot = self.renderer.get_plot(Curve([]))
     diff = self.renderer.diff(plot)
     events = [e for e in diff.content['events'] if e.get('attr', None) == 'outline_line_color']
     self.assertTrue(bool(events))
     self.assertEqual(events[-1]['new']['value'], '#444444')
コード例 #23
0
 def test_aggregate_curve_datetimes_dask(self):
     df = pd.DataFrame(
         data=np.arange(1000), columns=['a'],
         index=pd.date_range('2019-01-01', freq='1T', periods=1000),
     )
     ddf = dd.from_pandas(df, npartitions=4)
     curve = Curve(ddf, kdims=['index'], vdims=['a'])
     img = aggregate(curve, width=2, height=3, dynamic=False)
     bounds = (np.datetime64('2019-01-01T00:00:00.000000'), 0.0,
               np.datetime64('2019-01-01T16:39:00.000000'), 999.0)
     dates = [np.datetime64('2019-01-01T04:09:45.000000000'),
              np.datetime64('2019-01-01T12:29:15.000000000')]
     expected = Image((dates, [166.5, 499.5, 832.5], [[332, 0], [167, 166], [0, 334]]),
                      ['index', 'a'], 'Count', datatype=['xarray'], bounds=bounds)
     self.assertEqual(img, expected)
コード例 #24
0
    def test_overlay_options_partitioned(self):
        """
        The new style introduced in #73
        """
        data = [zip(range(10),range(10)), zip(range(5),range(5))]
        o = Overlay([Curve(c) for c in data])(
            dict(plot={'Curve.Curve':{'show_grid':False}},
                 style={'Curve.Curve':{'color':'k'}}))

        self.assertEqual(Store.lookup_options('matplotlib',
            o.Curve.I, 'plot').kwargs['show_grid'], False)
        self.assertEqual(Store.lookup_options('matplotlib',
            o.Curve.II, 'plot').kwargs['show_grid'], False)
        self.assertEqual(Store.lookup_options('matplotlib',
            o.Curve.I, 'style').kwargs['color'], 'k')
        self.assertEqual(Store.lookup_options('matplotlib',
            o.Curve.II, 'style').kwargs['color'], 'k')
コード例 #25
0
    def test_overlay_options_complete(self):
        """
        Complete specification style.
        """
        data = [zip(range(10),range(10)), zip(range(5),range(5))]
        o = Overlay([Curve(c) for c in data])(
            {'Curve.Curve':{'plot':{'show_grid':True},
                            'style':{'color':'b'}}})

        self.assertEqual(Store.lookup_options('matplotlib',
            o.Curve.I, 'plot').kwargs['show_grid'], True)
        self.assertEqual(Store.lookup_options('matplotlib',
            o.Curve.II, 'plot').kwargs['show_grid'], True)
        self.assertEqual(Store.lookup_options('matplotlib',
            o.Curve.I, 'style').kwargs['color'], 'b')
        self.assertEqual(Store.lookup_options('matplotlib',
            o.Curve.II, 'style').kwargs['color'], 'b')
コード例 #26
0
    def test_render_dynamicmap_with_stream_dims(self):
        stream = Stream.define(str('Custom'), y=2)()
        dmap = DynamicMap(lambda x, y: Curve([x, 1, y]),
                          kdims=['x', 'y'],
                          streams=[stream]).redim.values(x=[1, 2, 3])
        obj, _ = self.renderer._validate(dmap, None)
        self.renderer.components(obj)
        [(plot, pane)] = obj._plots.values()
        cds = plot.handles['cds']

        self.assertEqual(cds.data['y'][2], 2)
        stream.event(y=3)
        self.assertEqual(cds.data['y'][2], 3)

        self.assertEqual(cds.data['y'][0], 1)
        slider = obj.layout.select(DiscreteSlider)[0]
        slider.value = 3
        self.assertEqual(cds.data['y'][0], 3)
コード例 #27
0
    def view_map(self):
        # print('view_map method')

        if self.adh_mod.mesh.elevation_toggle:
            elevation = rasterize(self.adh_mod.mesh.tri_mesh,
                                  aggregator=ds.mean('z'),
                                  precompute=True).apply.opts(
                                      opts.Image(
                                          cmap=self.cmap_opts.colormap,
                                          clim=self.display_range.color_range,
                                          height=self.map_height,
                                          width=self.map_width))
        else:
            elevation = Curve([]).opts(height=self.map_height,
                                       width=self.map_width)

        # return self.adh_mod.mesh.view_bathy() * self.adh_mod.mesh.view_elements(line_color='yellow') * base_map * self.view_scatter()

        return elevation * self.adh_mod.mesh.view_elements(
            line_color='yellow') * hv.DynamicMap(
                self.adh_mod.wmts.view) * self.view_scatter()
コード例 #28
0
 def test_render_to_png(self):
     curve = Curve([])
     renderer = BokehRenderer.instance(fig='png')
     png, info = renderer(curve)
     self.assertIsInstance(png, bytes)
     self.assertEqual(info['file-ext'], 'png')
コード例 #29
0
 def test_render_holomap_not_embedded(self):
     hmap = HoloMap({i: Curve([1, 2, i]) for i in range(5)})
     data, _ = self.renderer.instance(widget_mode='live').components(hmap)
     self.assertNotIn('State', data['text/html'])
コード例 #30
0
 def test_render_holomap_embedded(self):
     hmap = HoloMap({i: Curve([1, 2, i]) for i in range(5)})
     data, _ = self.renderer.components(hmap)
     self.assertIn('State', data['text/html'])
コード例 #31
0
 def test_render_static(self):
     curve = Curve([])
     obj, _ = self.renderer._validate(curve, None)
     self.assertIsInstance(obj, CurvePlot)
コード例 #32
0
 def test_hist_curve_int_edges_construct(self):
     hist = Histogram(Curve(range(3)))
     values = hist.dimension_values(1)
     edges = hist.edges
     self.assertEqual(values, np.arange(3))
     self.assertEqual(edges, np.array([-.5, .5, 1.5, 2.5]))