Python 如何在holoviews+;博克?

Python 如何在holoviews+;博克?,python,bokeh,holoviews,Python,Bokeh,Holoviews,我想用bokeh后端在holoviews中绘制一条垂直线,该后端有一个标签显示在我的图例中。我需要这条线是整个情节的高度,不管它是单独的还是与其他元素重叠的。我怎样才能做到这一点 例子 我在示例中添加了一个曲线图,因为即使是可以显示在图例中的元素也只是将其标签用作标题 将numpy导入为np 将全息视图导入为hv 高压扩展(“bokeh”) x=np.linspace(0,1) 曲线=高压曲线((x,np.sin(x)),label=“sin(x)”) vline=hv.vline(0.5,la

我想用
bokeh
后端在
holoviews
中绘制一条垂直线,该后端有一个标签显示在我的图例中。我需要这条线是整个情节的高度,不管它是单独的还是与其他元素重叠的。我怎样才能做到这一点

例子 我在示例中添加了一个曲线图,因为即使是可以显示在图例中的元素也只是将其标签用作标题

将numpy导入为np
将全息视图导入为hv
高压扩展(“bokeh”)
x=np.linspace(0,1)
曲线=高压曲线((x,np.sin(x)),label=“sin(x)”)
vline=hv.vline(0.5,label=“vline”)
曲线
这给出了以下曲线图:

没有垂直线的标签。如何显示标签?

如文档中所述,但尚未在文档中显示,
VLine
HLine
没有出现在图例中,也没有计划添加对它们的支持(基本上,在
bokeh
中,它们是以不同的方式创建的,因此没有简单的方法将它们放在图例中)。可以使用
尖峰
。然而,如中所述,尖峰不会很好地覆盖。特别是,如果没有给出明确的高度,它们不会将其高度调整为绘图的完整高度。这里是我想出的两个解决办法

解决方法1 您可以明确地找出垂直线应该覆盖的其他元素的高度,并使用它创建具有适当高度的尖峰。这是可行的,但它相当脆弱,因为您需要在充分了解所有可能被尖峰覆盖的情况下对其进行调整

将numpy导入为np
将全息视图导入为hv
高压扩展(“bokeh”)
x=np.linspace(0,1)
曲线=高压曲线((x,np.sin(x)),label=“sin(x)”)
高度=curve.data[“y”].max()-curve.data[“y”].min()
尖峰=高压尖峰([0.5],[height]),vdims=“height”,label=“mid”)
尖峰曲线

解决方法2 这使用了
v线
尖峰
。该尖峰将不可见,除非它将为图例添加一个条目。V线将位于尖峰顶部,并且V线已经调整自己以填充图形的整个高度。这需要创建一个额外的元素,但它更坚固,因为您可以将此尖峰和V线的乘积与任何其他元素叠加,仍然可以获得一条填充绘图高度并显示在图例中的线。但是,由于图例条目是基于spike的,因此只有确保它们具有相似的外观(例如,vline和spike具有相同的颜色),它才会看起来像vline

#需要确保尖峰/虚线的颜色相同
#如果我也调整钉子的厚度,看起来会好一点
尖峰=高压尖峰([0.5],label=“mid”).opts(color=“black”)
vline=hv.vline(0.5).选项(color=“black”)
尖峰曲线

在未来,
尖峰
将有望在没有明确给出高度的情况下将自己扩展到全高,这样就不需要这些解决方法了