【问题标题】:Holoviews: Format legend and colors of Spread and Curve OverlayHoloviews:格式图例和传播和曲线叠加的颜色
【发布时间】:2018-05-31 14:03:46
【问题描述】:

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

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

这似乎是一个非常标准的情节,但我在 Holoviews 文档中几乎找不到关于配对不同元素或控制图例的信息。

【问题讨论】:

    标签: legend errorbar holoviews


    【解决方案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()
    

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

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

    【讨论】:

    • 另外我已经打开了一个问题,以确保我们添加了一个关于图例的部分,请参阅github.com/ioam/holoviews/issues/2756
    • 这看起来很棒!唯一缺失的部分似乎是图例没有标有适当的关键尺寸,例如当它发生时会发生这种情况。只是曲线的叠加。
    • 同意,这是一个长期存在的问题,如果您愿意,可以在散景中遇到相应的问题:github.com/bokeh/bokeh/issues/6769
    • 有没有办法覆盖默认的图例标题?或者向预先生成的图例添加文本?在使用 Table 和 .to 方法时,使用 label 属性并不是一个真正的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多