Holoviews:格式化传播和曲线叠加的图例和颜色

时间:2018-05-31 14:03:47

标签: legend errorbar holoviews

鉴于一个包含4个或更多列的整洁Pandas列,我想要一个非常简单的图:两个列应该是单个图的xy轴,其中一个列应该索引Overlay N Curve个对象基于xy列和N Spread个对象,使用最后一列作为错误。因此,如果N = 4,则应该有4条曲线和4条点差。具有相同索引的曲线和点差应该是相同的颜色,图例应该证明这一点。

使用table.to(hv.Curve,'col1','col2')我可以获得曲线的Holomap,并且我可以通过一些努力为传播做同样的事情。如果我然后打电话给.overlay()我会得到一个很好的曲线,包括一个传奇,但是当我为传播做同样的事情时,传奇就会消失。如果我覆盖了两个,则图例同样消失,颜色循环停止工作,使所有曲线和涂抹颜色相同。如果我创建一个curve*spread个对象的Holomap,那么颜色匹配但传说仍然消失。

这看起来像是一个非常标准的情节,但我在Holoviews文档中很少发现关于配对不同元素或控制传奇的内容。

1 个答案:

答案 0 :(得分:1)

如果没有任何具体的代码,这有点难以回答,例如,我无法重现您所描述的一些问题。但是,第一个问题只是默认情况下show_legend元素未启用Spread。在使用.to.overlay绘制曲线和点差的情况下,以下是我可以确认的作品:

%%opts Spread [show_legend=True width=600] Overlay [legend_position='right']
df = pd.DataFrame({
    'index': np.arange(100), 'y': np.random.randn(100).cumsum(),
    'err': np.random.rand(100)+0.1, 'z': np.repeat(np.arange(10), 10)
})
ds = hv.Dataset(df)
ds.to(hv.Curve, 'index', 'y', 'z').overlay() * ds.to(hv.Spread, 'index', ['y', 'err']).overlay()

enter image description here

  

如果我创建一个曲线*展开对象的Holomap,那么颜色匹配但图例仍然消失。

这确实是当前的限制,因为我们过去建议不要以这种方式嵌套对象,但我刚刚打开了this PR,这也允许这种方法。