HoloViews区域叠加轴和标签

时间:2017-12-01 01:52:39

标签: python-3.x overlay holoviews

我正在尝试重叠ScatterArea,但后者会导致轴及其标签消失。

import pandas as pd
import holoviews as hv
hv.extension('bokeh')
from bokeh.models import HoverTool

data = dict(A=["A1", "A1", "A1", "A1"], B=["B1", "B1", "B1", "B2"], C=[10, -5, 23, 9], D=[0, 5, -7, 6])
df = pd.DataFrame(data=data)

df_hv = hv.Dataset(df)

hover = HoverTool(
    tooltips=[("C", "@C{0,.0}"),
              ("D", "@D{0,.0}")]
)

scatter = df_hv.to(hv.Scatter, kdims=["C", "D"], vdims=["C", "D"], groupby=["A", "B"]).redim.label(x="A (unitA)", y="B (unitB)")
area =  hv.Area([(0, 0), (10, 9), (30, 8), (25, -11), (15, -12), (0, 0)]).opts(style=dict(color="lightgrey", line_color="white", line_dash=None, alpha=0.5)).redim.label(x="A (unitA)", y="B (unitB)")

然后:

%%opts Scatter [tools=[hover]] (size=10)
scatter * area

结果如下:

With hv.Area

如果您使用以下内容替换hv.Area行,

area =  hv.Curve([(0, 0), (10, 90), (30, 80), (25, 110), (15, 120)]).opts(style=dict(line_color="black", line_dash="dashed", alpha=0.5))

你会看到轴及其标签:

enter image description here

这是一个错误吗?或者我错过了什么?

bokeh=0.12.7
holoviews=1.8.3
pandas=0.20.2
python=3.6.1

更新

在其中一条评论之后,我按如下方式更改了区域,

area =  hv.Area([(0, 0), (10, 9), (30, 8), (25, -11), (15, -12), (0, 0)]).opts(style=dict(color="lightgrey", line_color="white", line_dash="solid", alpha=0.5)).redim.label(x="A (unitA)", y="B (unitB)")

但是,作为一种副作用,它在原点上有一条难看的线:

With hv.Area 2

如果我做line_color="lightgrey",情况就不会好转。

更新2

添加选项line_alpha=0解决了其中一条评论中建议的问题。

area =  hv.Area([(0, 0), (10, 9), (30, 8), (25, -11), (15, -12), (0, 0)]).opts(style=dict(color="lightgrey", line_color="white", line_dash="solid", alpha=0.5, line_alpha=0)).redim.label(x="A (unitA)", y="B (unitB)")

Solved

1 个答案:

答案 0 :(得分:1)

我不太确定这是怎么发生的或者为什么发生这种情况(我怀疑它是BokehJS中的东西),但是如果你删除它似乎是line_dash=None元素的样式选项Area它或用line_dash='solid'轴替换它来替换它。

我会跟进,可能会在散景中提出问题。