Holoviews: условные обозначения формата и цвета наложения разворота и кривой

Учитывая аккуратный столбец Pandas с 4 или более столбцами, мне нужен очень простой график: два столбца должны быть осями xy одной фигуры, а один из столбцов должен индексировать Overlay из N Curve объектов на основе xy столбцы и N Spread объектов, используя последний столбец как ошибку. Итак, если N = 4, должно быть 4 кривых и четыре разворота. Кривые и спреды с одинаковым индексом должны быть одного цвета, и легенда должна это подтверждать.

Используя table.to(hv.Curve,'col1','col2'), я могу получить голографическую карту для кривых, и с некоторыми усилиями я могу сделать то же самое для разворота. Если я затем позвоню .overlay(), я получу хороший рисунок для кривых, включая легенду, но когда я сделаю то же самое для разворота, легенда исчезнет. Если я накладываю их на два, легенда также исчезает и цветовой цикл перестает работать, делая все кривые и распространяющиеся одинаковыми. Если я создам голографическую карту из curve*spread объектов, то цвета совпадают, но легенды все равно нет.

Это кажется очень стандартным сюжетом, но я очень мало могу найти в документации Holoviews о соединении различных элементов или управлении легендой.


person Bonnevie    schedule 31.05.2018    source источник


Ответы (1)


На этот вопрос сложно ответить без какого-либо конкретного кода, например, я не могу воспроизвести некоторые проблемы, которые вы описываете. Однако первая проблема заключается в том, что show_legend не включен по умолчанию для элемента Spread. В случае построения кривой и спреда с использованием .to и .overlay, вот что я могу подтвердить:

%%opts Spread [show_legend=True width=600] Overlay [legend_position='right']
df = pd.DataFrame({
    'index': np.arange(100), 'y': np.random.randn(100).cumsum(),
    'err': np.random.rand(100)+0.1, 'z': np.repeat(np.arange(10), 10)
})
ds = hv.Dataset(df)
ds.to(hv.Curve, 'index', 'y', 'z').overlay() * ds.to(hv.Spread, 'index', ['y', 'err']).overlay()

введите здесь описание изображения

Если я создаю голографическую карту объектов кривой * распространения, тогда цвета совпадают, но легенды все равно нет.

Это действительно текущее ограничение, поскольку в прошлом мы рекомендовали не использовать такой способ вложения объектов, однако я только что открыл этот пиар, который также допускает такой подход.

person philippjfr    schedule 01.06.2018
comment
Отдельно я открыл проблему, чтобы убедиться, что мы добавили раздел о легендах, см. github.com/ ioam / holoviews / issues / 2756. - person philippjfr; 01.06.2018
comment
Выглядит отлично! Единственная недостающая часть, кажется, заключается в том, что легенда не помечена соответствующим ключевым размером, что происходит, например, когда просто наложение кривых. - person Bonnevie; 02.06.2018
comment
Согласен, это давняя проблема, если вы так склонны, возможно, отметьте соответствующую проблему в боке: github.com/bokeh/bokeh/issues/6769 - person philippjfr; 02.06.2018
comment
Есть ли способ изменить заголовок легенды по умолчанию? Или добавить текст к заранее созданной легенде? Использование свойства label на самом деле не вариант при использовании Table и метода .to. - person Bonnevie; 02.06.2018