Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I manually set the limits of a holoview's colorbar?

When I try to input my own ticker...

In an earlier cell...

ticker = FixedTicker(ticks=range(0, 10))

In the following cell...

%%opts HeatMap [colorbar=True colorbar_opts={'ticker': ticker}]

I get...

TypeError [Call holoviews.ipython.show_traceback() for details]
MetaModel object got multiple values for keyword argument 'ticker'

Here's the traceback...

  File "/Users/ahuang11/anaconda3/envs/tf/lib/python3.6/site-packages/holoviews/plotting/bokeh/element.py", line 757, in _init_glyphs
    renderer, glyph = self._init_glyph(plot, mapping, properties)

  File "/Users/ahuang11/anaconda3/envs/tf/lib/python3.6/site-packages/holoviews/plotting/bokeh/element.py", line 1201, in _init_glyph
    self._draw_colorbar(plot, self.handles['color_mapper'])

  File "/Users/ahuang11/anaconda3/envs/tf/lib/python3.6/site-packages/holoviews/plotting/bokeh/element.py", line 1100, in _draw_colorbar
    **dict(opts, **self.colorbar_opts))

TypeError: MetaModel object got multiple values for keyword argument 'ticker'
like image 730
Andrew Avatar asked Feb 06 '18 23:02

Andrew


1 Answers

The color range and all other ranges can be set on the Dimension objects of HoloViews Elements. When you declare a HeatMap three (or more) dimensions are created. The first two are the key dimensions (kdims) corresponding to the x- and y-axis of the HeatMap. Secondly there are two or more value dimensions (vdims) the first of which is mapped to the color range. Dimension ranges can be explicitly declared when constructing the object. Here we set the color of the 'z' Dimension, which should be the name of whatever column you are plotting:

hv.HeatMap(..., vdims=hv.Dimension('z', range=(0, 10)))

You can also use the redim interface to override the range after the fact. This will also work when you have a collection of objects, as it will set the range recursively on all objects which contain that dimension and return a new object. That looks something like this:

heatmap = hv.HeatMap(...)
redimensioned_heatmap = heatmap.redim.range(z=(0, 10))
like image 120
philippjfr Avatar answered Oct 29 '22 05:10

philippjfr