如中所述
this issue
VLine
和
HLine
不要出现在图例中,也没有计划添加对它们的支持(基本上,在
bokeh
它们的创造方式不同,因此没有一种简单的方法将它们放入传说中)。可以使用
Spikes
another issue
,尖刺覆盖不好。特别是,如果没有给出明确的高度,它们不会将其高度调整为绘图的全高。下面是我想出的两个解决办法。
解决方法1
您可以显式地找出垂直线应该覆盖的其他元素的高度,并使用它来创建具有适当高度的尖峰。这是可行的,但它相当脆弱,因为你需要适应它的所有知识,可以覆盖与尖峰。
import numpy as np
import holoviews as hv
hv.extension("bokeh")
x = np.linspace(0, 1)
curve = hv.Curve((x, np.sin(x)), label="sin(x)")
height = curve.data["y"].max() - curve.data["y"].min()
spikes = hv.Spikes(([0.5], [height]), vdims="height", label="mid")
spikes * curve
V线
. 刺将不可见,除了它将有助于进入传说。V线将在尖峰的顶端,V线已经调整自己来填充整个图形的高度。这需要创建一个额外的元素,但它更为健壮,因为您可以将此spike和vline的乘积与任何其他元素叠加,仍然可以得到一条填充绘图高度并出现在图例中的线。但是,由于图例条目是基于峰值的,只有确保它们具有相似的外观(例如,峰值和峰值具有相同的颜色),它才会看起来像V线。
# need to make sure the colors are the same for spikes/vlines
# would look a bit better if I adjusted the spike thickness too
spikes = hv.Spikes([0.5], label="mid").opts(color="black")
vline = hv.VLine(0.5).opts(color="black")
spikes * curve * vline
未来,
尖刺