我想使用 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 中的情节。 (页面底部)。
最佳答案
如果要直接使用 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
关于python - 如何从 hv.Dataset 创建分组条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54440096/