Как создать сгруппированный барплот из hv.Dataset? - PullRequest
0 голосов
/ 30 января 2019

Я хотел бы создать сгруппированный столбчатый график из pandas.DataFrame, используя наборы данных Holoviews.

В частности, я бы хотел, чтобы столбцы были сгруппированы по их исходному столбцу.Прямо сейчас бары строятся друг на друге:

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

df = pd.DataFrame({'A': list(range(10,15)),
                   'B' : list(reversed(range(20,25)))})
ds = hv.Dataset(df, kdims='index')
ds.to.bars(vdims='A')*ds.to.bars(vdims='B').opts(alpha=.5)

Это приводит к: текущий фрагмент

Однако я хотел бы иметь их рядомсторона, аналогичная сюжету, указанному в официальных документах (внизу страницы).

1 Ответ

0 голосов
/ 30 января 2019

Для построения графиков непосредственно с пандами DataFrames я бы порекомендовал библиотеку hvPlot , которая построена поверх HoloViews.HoloViews хорошо справляется с так называемыми аккуратными данными , в то время как hvPlot создан для работы как с аккуратными, так и с широкими данными.Использование hvPlot для генерации необходимого вам графика так же просто, как:

import hvplot.pandas
df.hvplot.bar()

bar plot

Используя HoloViews напрямую, вы должны будете использовать pd.melt для преобразованияданные в так называемый аккуратный формат.Это выглядело бы так:

hv.Bars(pd.melt(df.reset_index(), ['index']), ['index', 'variable'], 'value')

melt_example

Подробное объяснение того, что делает pd.melt, см. эта визуализация

...