我想使用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
获得
但是如果给我mean_plot
并且不知道其颜色怎么办?我确定当前选项必须存储在实例上的某个位置,但是我不知道如何访问它们。我想做类似的事情
mean_color = mean_plot.<access_options_somehow>.color
err_plot = hv.ErrorBars((range(len(means)), means, errors)).opts(edgecolor=mean_color)
答案 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