如何手动设置Holoviews的颜色条限制?

14

当我尝试输入自己的股票代码时...

在之前的单元格中...

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

在下一个单元格中...

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

我明白了...

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

以下是追溯信息...

  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'
1个回答

11

在HoloViews元素的Dimension对象上可以设置颜色范围和所有其他范围。当你声明一个HeatMap时,会创建三个(或更多)维度。前两个是键维度(kdims),对应于HeatMap的x和y轴。其次,有两个或更多的值维度(vdims),其中第一个映射到颜色范围。在构建对象时可以明确声明维度范围。这里我们设置'z'维度的颜色,它应该是您正在绘制的任何列的名称:


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

您还可以使用 redim 接口在事后覆盖范围。当您拥有一组对象时,这也适用,因为它会递归地设置包含该维度的所有对象的范围并返回一个新对象。大致如下:

heatmap = hv.HeatMap(...)
redimensioned_heatmap = heatmap.redim.range(z=(0, 10))

谢谢,那个有效!有没有办法调整显示的刻度数? - Andrew
3
对于hvplot用户:值维度不是“z”,而是您在 C=<???> 中设置的任何内容。您可以使用 print(heatmap.vdims) 检查名称。然后,您可以使用 heatmap.redim.range(my_col=(0, 10))heatmap.redim.range(**{str(heatmap.vdims[0]):(0, 10)}) 更改范围。这让我花了很多时间才弄清楚。 - magum
哇,@magnum,非常感谢,这也花费了我几个小时。 :/ - K.-Michael Aye
9
现今,我认为你可以执行 hv_obj.opts(clim=(0, 10)) - Andrew
2
@K.-MichaelAye 如果您将选项设置在AdjointLayout上,则无法确定要设置的元素是哪个,因此如果您要针对HeatMap进行定位,则应使用hv_obj.opts(hv.opts.HeatMap(clim=(0, 10))),或者如果没有叠加层,则还可以使用hv_obj.apply.opts(clim=(0, 10)) - philippjfr
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接