2

我有一个带有两个静态 HLine 的条形图,并且想为它们添加一个标签(或一个图例),以便在图上定义它们。我试过类似的东西:

eq = (
    sr2.hvplot(
        kind="bar", 
        groupby ="rl", 
        dynamic = False,) 
    * hv.HLine(0.35, name="IA1").opts(color='red')
    * hv.HLine(0.2, label="IA2").opts(color='green')
)

但图表没有标签。

4

2 回答 2

2

This answer to a similar question说明这并不容易,您需要一种解决方法:
如何在holoviews + bokeh中获得带有图例标签的全高垂直线?

您还可以使用此解决方案的一部分:
https ://discourse.holoviz.org/t/horizo​​ntal-spikes/117

也许最简单的方法是hv.HLine()当您想要水平线的图例时不要使用,而是自己创建一条手动线hv.Curve()

# import libraries
import pandas as pd
import seaborn as sns
import holoviews as hv
import hvplot.pandas
hv.extension('bokeh')

# create sample dataset
df = sns.load_dataset('anscombe')

# create some horizontal lines manually defining start and end point
manual_horizontal_line = hv.Curve([[0, 10], [15, 10]], label='my_own_line')
another_horizontal_line = hv.Curve([[0, 5], [15, 5]], label='another_line')

# create scatterplot
scatter_plot = df.hvplot.scatter(x='x', y='y', groupby='dataset', dynamic=False)

# overlay manual horizontal lines on scatterplot
scatter_plot * manual_horizontal_line * another_horizontal_line

结果图:

将带有图例的手动水平线添加到散点图

于 2020-12-08T12:48:59.387 回答
1

如果您想要文本标签而不是图例,您可以使用hv.Text

import holoviews as hv
hv.extension('bokeh')

hv.Scatter(([4,6,8,10],[0.1,0.5,0.01,0.7])) * \
hv.HLine(0.35).opts(color='red')   * hv.Text(9, 0.38, "IA1").opts(color='red') * \
hv.HLine(0.20).opts(color='green') * hv.Text(9, 0.23, "IA2").opts(color='green')

在此处输入图像描述

于 2020-12-15T22:20:49.763 回答