我想使用Holoviews数据集从pandas.DataFrame创建分组的条形图。
我特别希望条形图按其原始列分组。 现在,条形图相互重叠:
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)
这导致: current snippet
不过,我想让它们并排放置,类似于official docs(页面底部)中显示的情节。
答案 0 :(得分:1)
对于直接使用pandas DataFrames进行绘图,我建议使用hvPlot库,该库基于HoloViews构建。 HoloViews可以很好地处理所谓的tidy data,而hvPlot可以很好地处理整齐和宽广的数据。使用hvPlot生成所需的绘图非常简单:
import hvplot.pandas
df.hvplot.bar()
直接使用HoloViews,您将必须使用pd.melt
将数据转换为所谓的整齐格式。看起来像这样:
hv.Bars(pd.melt(df.reset_index(), ['index']), ['index', 'variable'], 'value')
要详细了解pd.melt
在做什么,请参见this visualization