如何使用 matplotlib 在全息视图中绘制相同颜色的曲线和误差线?

How to plot a curve and error bars of the same color in holoviews with matplotlib?

我想使用 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)

我没有安装 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)

根据@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