【问题标题】:How to create grouped barplot from hv.Dataset?如何从 hv.Dataset 创建分组条形图?
【发布时间】:2019-01-31 07:52:15
【问题描述】:

我想使用 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(页面底部)中的情节。

【问题讨论】:

    标签: python bokeh holoviews


    【解决方案1】:

    对于直接使用 pandas DataFrames 进行绘图,我建议使用构建在 HoloViews 之上的 hvPlot 库。 HoloViews 可以很好地处理所谓的tidy data,而 hvPlot 可以很好地处理整齐和广泛的数据。使用 hvPlot 生成您想要的绘图非常简单:

    import hvplot.pandas
    df.hvplot.bar()
    

    直接使用 HoloViews,您必须使用 pd.melt 将数据转换为所谓的 tidy 格式。看起来像这样:

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

    有关 pd.melt 所做工作的简洁解释,请参阅 this visualization

    【讨论】:

    • 我不知道melt。通过您的回答,我能够弄清楚。特维姆!
    猜你喜欢
    • 2018-05-27
    • 2021-10-14
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多