【问题标题】:How to plot a curve and error bars of the same color in holoviews with matplotlib?如何使用 matplotlib 在全息视图中绘制相同颜色的曲线和误差线?
【发布时间】:2019-05-16 16:04:44
【问题描述】:

我想使用matplotlib 后端在holoviews 中绘制一条带有误差线的曲线。我希望曲线和误差线是相同的颜色,但没有明确指定曲线的颜色。 IE。我可以轻松做到这一点

import holoviews as hv
hv.extension("matplotlib")

means = [1, 4, 2, 3]
errors = [0.3, 0.5, 0.2, 0.1]
color = "green"
mean_plot = hv.Curve(means).opts(color=color)
err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=color)
mean_plot * err_plot

得到

但是如果我得到mean_plot 并且还不知道它的颜色怎么办?我确定当前选项必须存储在实例的某个位置,但我不知道如何访问它们。我想做类似的事情

mean_color = mean_plot.<access_options_somehow>.color
err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=mean_color)

【问题讨论】:

    标签: python matplotlib holoviews


    【解决方案1】:

    我没有安装holoviews,但由于它使用的是matplotlib,您可以尝试通用解决方案来提取线条的颜色,然后用它来绘制误差线

    mean_plot = hv.Curve(means) # Don't specify any color here
    mean_color = mean_plot[0].get_color() # Extract the default color
    err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=mean_color)
    

    【讨论】:

    • 这不适用于holoviews。对mean_plot 的索引给出了用于绘图的数据(因此,在我的示例中,mean_plot[0]1)。我以前没有使用过它,所以我必须搜索文档以了解如何使用,但我相信有一种方法可以从 holoviews 元素中获取 matplotlib 图形;这可能是唯一的方法,但如果有的话,我更喜欢holoviews-y 解决方案。
    【解决方案2】:

    根据@Sheldore 的回答和我在那里的评论,这是一种方法,首先将holoviews 元素呈现为matplotlib 图形,然后在那里找到颜色。这不是很优雅,我认为一定有更好的方法,但它可以完成工作。

    import holoviews as hv
    hv.extension("matplotlib")
    
    means = [1, 4, 2, 3]
    errors = [0.3, 0.5, 0.2, 0.1]
    color = "green"
    mean_plot = hv.Curve(means).opts(color=color)
    
    fig = hv.render(mean_plot)
    ax = fig.axes[0]
    line = ax.get_lines()[0]
    mean_color = line.get_color()
    
    err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=mean_color)
    mean_plot * err_plot
    

    【讨论】:

      猜你喜欢
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 2012-02-26
      相关资源
      最近更新 更多