python - 如何从 hv.Dataset 创建分组条形图?

标签 python bokeh holoviews

我想使用 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()

bar plot

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

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

melt_example

有关 pd.melt 正在执行的操作的简洁说明,请参阅 this visualization

关于python - 如何从 hv.Dataset 创建分组条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54440096/

相关文章:

python - 如何在 Bokeh 文档中找到带有 selenium webdriver 的按钮?

python - Holoviews Heatmap 为每个点指定颜色

python - Numpy 和 Tensorflow 之间的区别?

python networkx 在某些条件下删除节点和边

python - Bokeh:显示/隐藏图形的小部件

python - 交互式条件直方图桶切片数据可视化

python - sqlite3 : create function regexp with python

python - 将函数应用于 pandas groupby 数据框中的所有列

python - 在全息 View 中自定义工具提示

python - Holoviews Hovertool 显示额外行?