在散景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')
。
Scatter
与Cycle('Category20')
中的特定颜色相关联?这只是Cycle()
的属性吗?是否有某种方式Overlay
自动与Scatter和Cycle交互? .opts
上使用Scatter
方法使用此循环颜色(即上例中的第二行到第二行),那么然后执行{ {1}},不知何故,Holoviews知道根据国家/地区将每个Scatter分配给特定颜色。 我想确保我正确地绘制了我想要的内容。
谢谢!
答案 0 :(得分:0)
Holoviews如何知道将每个Scatter连接到Cycle('Category20')中的特定颜色?这只是Cycle()的属性吗? Overlay是否有某种方式可以自动与Scatter和Cycle进行交互?
您是正确的Cycle
和Overlay
旨在自动以这种方式进行互动。更明确地说,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))
在此示例中,我们创建了一个dim
表达式,该表达式指向“类别”维度,然后将每个类别(“ A”,“ B”和“ C”)映射为一种颜色(“红色”,“绿,蓝')。然后,我们将其分配给颜色选项。