Holoviews如何知道要为叠加中的每个散点图分配哪些颜色?

时间:2018-01-30 15:30:15

标签: overlay bokeh options holoviews

在散景Holoviews画廊中,有一个名为“Scatter economic”的例子。

http://holoviews.org/gallery/demos/bokeh/scatter_economic.html#bokeh-gallery-scatter-economic

在此图中,请注意Scatter的其中一个选项(color=Cycle('Category20'))。该图的最后一行是gdp_unem_scatter.overlay('Country')

  • 我的问题是:Holoviews如何知道将每个ScatterCycle('Category20')中的特定颜色相关联?这只是Cycle()的属性吗?是否有某种方式Overlay自动与Scatter和Cycle交互?
  • 一个稍微相关的混淆是,如果我使用.opts方法而不是示例中的单元魔法,它仍然有效。例如,如果我在.opts上使用Scatter方法使用此循环颜色(即上例中的第二行到第二行),那么然后执行{ {1}},不知何故,Holoviews知道根据国家/地区将每个Scatter分配给特定颜色。

我想确保我正确地绘制了我想要的内容。

谢谢!

2 个答案:

答案 0 :(得分:0)

  

Holoviews如何知道将每个Scatter连接到Cycle('Category20')中的特定颜色?这只是Cycle()的属性吗? Overlay是否有某种方式可以自动与Scatter和Cycle进行交互?

您是正确的CycleOverlay旨在自动以这种方式进行互动。更明确地说,Cycle中的每种颜色都被分配到叠加层的“图层”,直到循环用完颜色并循环。

  

例如,如果我在Scatter上使用带有此循环颜色的.opts方法(即上例中的第二行到第二行),然后执行.overlay('Country'),Holoviews会以某种方式知道根据国家/地区将每个Scatter指定为特定颜色。

这是因为在调用opts方法之前,您对overlay的调用会自定义数据结构元素的选项(此数据结构为HoloMap)。其中设置的选项会传播到Scatter中的HoloMap元素,这些元素现在将指定所选的Cycle。这意味着当这些元素放入叠加层时,HoloViews可以适当地查找Cycle并将其正确应用到叠加层。

希望有道理!

答案 1 :(得分:0)

现在可以通过使用所谓的dim表达式在NdOverlay中映射类别(如上面的示例中所使用的),然后定义一个表达式进行映射:

dim_expr = hv.dim('category').categorize({'A': 'red', 'B': 'green', 'C': 'blue'})
overlay = hv.NdOverlay({chr(65+i): hv.Scatter(np.random.rand(10, 2)) for i in range(3)}, 'category')
overlay.opts(hv.opts.Scatter(color=dim_expr))

enter image description here

在此示例中,我们创建了一个dim表达式,该表达式指向“类别”维度,然后将每个类别(“ A”,“ B”和“ C”)映射为一种颜色(“红色”,“绿,蓝')。然后,我们将其分配给颜色选项。