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

时间:2019-05-16 16:04:45

标签: python matplotlib holoviews

我想使用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)
err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=color)
mean_plot * err_plot

获得

enter image description here

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

基于@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