首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HoloViews - NdOverlay -图例

HoloViews - NdOverlay -图例
EN

Stack Overflow用户
提问于 2020-11-09 07:49:10
回答 1查看 431关注 0票数 1

我有一个包含多个holoviews.Curve对象的hv.NdOverlay图。曲线对象属于一个组(在本例中为组'A‘或组'B')。如何设置hv.NdOverlay图以显示显示这两个组的图例?

代码示例(全息视图版本: 1.13.4):

代码语言:javascript
复制
import holoviews as hv
import numpy as np
from datetime import datetime
from holoviews import opts

hv.extension('bokeh')

x_start = [0, 100, 100, 0, 120, 200]
x_end = [220, 340, 280, 120, 290, 400]
date = [datetime(2020, 2, 10, 0, 0, 0), datetime(2018, 5, 22, 0, 0, 0),
        datetime(2012, 7, 8, 0, 0, 0), datetime(1999, 12, 28, 0, 0, 0), 
        datetime(2004, 3, 21, 0, 0, 0), datetime(1992, 11, 23, 0, 0, 0)]
group = ['A', 'A', 'B', 'A', 'A', 'B']

curves_dict = dict()
for key in range(len(x_start)):
    curves_dict[key] = hv.Curve(((x_start[key], x_end[key]),
                                 (np.datetime64(date[key]), np.datetime64(date[key]))),
                                'X', 'Year',
                                group=group[key])

curves_ndoverlay_all = hv.NdOverlay(curves_dict)
curves_ndoverlay_all.opts(
    opts.NdOverlay(show_grid=True, height=300, responsive=True, align='center'),
    opts.Curve('A', color='red'),
    opts.Curve('B', color='green'))

我得到的是:

我想得到的是一个有2个条目的图例,一个显示红线,后面跟着字母'A‘,另一个显示绿线,后面跟着字母'B’。看起来holoviews.NdOverlay正在从curves_dict的密钥中提取图例的信息。但是密钥必须是唯一的。所以看起来这对我想要的情节是行不通的。有没有不同的方法来设置holoviews.NdOverlay,这样我就可以得到我上面描述的图例了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-12 00:40:57

这就是你想要的结果吗?

这是我用来创建它的代码:

代码语言:javascript
复制
import holoviews as hv
import numpy as np
from datetime import datetime
from holoviews import opts

hv.extension('bokeh')

x_start = [0, 100, 100, 0, 120, 200]
x_end = [220, 340, 280, 120, 290, 400]
date = [datetime(2020, 2, 10, 0, 0, 0), datetime(2018, 5, 22, 0, 0, 0),
        datetime(2012, 7, 8, 0, 0, 0), datetime(1999, 12, 28, 0, 0, 0), 
        datetime(2004, 3, 21, 0, 0, 0), datetime(1992, 11, 23, 0, 0, 0)]
group = ['A', 'A', 'B', 'A', 'A', 'B']

def fig(key):
    return hv.Curve(((x_start[key], x_end[key]), (np.datetime64(date[key]), np.datetime64(date[key]))),
        'X', 'Year',
        group=group[key],
        label=group[key]
        )

for i in range(len(group)):
    if i == 0:
        f = fig(i)
    else:
        f *= fig(i)
        
f.opts(opts.Curve(show_grid=True, height=300, responsive=True, align='center'),    
       opts.Curve('A', color='red'),
       opts.Curve('B', color='green'))

你的方法有两点不同。我使用了hv.Curve()label参数,不再使用NdOverlay

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64744222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档