3

在散景 Holoviews 画廊中,有一个名为“分散经济”的示例。

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

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

  • 我的问题是: Holoviews 如何知道将每个Scatter颜色与特定颜色联系起来Cycle('Category20')?这只是 的属性Cycle()吗?是否有某种方式可以Overlay自动与 Scatter 和 Cycle 交互?
  • 一个稍微相关的困惑是,如果我使用 .opts 方法而不是示例中的单元格魔法,它仍然有效。例如,如果我使用.opts带有此循环颜色的方法Scatter(即上例中倒数第二行),然后执行.overlay('Country'),Holoviews 不知何故知道将每个 Scatter 分配给基于 Country 的特定颜色。

我想确保我正确地绘制了我的意图。

谢谢!

4

2 回答 2

0

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

您是正确的,Cycle并且Overlay旨在自动以这种方式进行交互。更明确地说,每个颜色Cycle都分配给覆盖的“层”,直到循环用完颜色并循环。

例如,如果我在 Scatter 上使用带有此循环颜色的 .opts 方法(即上例中倒数第二行),然后执行 .overlay('Country'),Holoviews 会以某种方式知道分配每个 Scatter到基于国家的特定颜色。

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

希望这是有道理的!

于 2018-01-30T16:36:30.743 回答
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))

在此处输入图像描述

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

于 2020-03-23T01:14:53.743 回答