来自Pandas Datafram的Hvplot/bokeh汇总条形图

2024-10-03 21:29:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打印一个“简单的”条形图,使用HVPlot和bokeh在jupyter笔记本。 以下是一些简化数据:

我的数据最初是这样的:

我的目标是得到一个这样的条形图(注意,它不必堆叠。唯一重要的是总数。)

由于我不知道如何获得包含某些列总和的条形图,所以我使用pandas.melt对数据进行建模,使其看起来像这样:

有了这些数据,我可以画出它,但是这些值不能求和。相反,彼此背后有多个铁条。

下面是我用来测试的代码:

 testd = {'Name': ['Item1', 'Item2','Item3','Item3'],'Filter': ['F1','F2','F1','F1'], 
                 'Count': [1,5,2,1], 'CountCategory': ['CountA','CountB','CountA','CountD']}
 testdf = pd.DataFrame(data=testd)
 testdf.hvplot.bar('CountCategory','Count',groupby='Filter', rot=90, aggregator=np.sum)

如果我省略aggregator=np.sum,它不会改变任何东西

有人知道如何正确地绘制这个图吗? 它不必使用“转置”数据,因为我这样做只是因为我不知道如何绘制原始数据。 另一个问题是是否有可能


Tags: 数据countnp绘制filterf1sum条形图
1条回答
网友
1楼 · 发布于 2024-10-03 21:29:02

datashade/rasterize操作使用aggregator来聚集数据,实际上对条形图没有影响。如果您想聚合数据,我建议您使用pandas方法。但是在你的例子中,我不认为这是问题所在,实现你所要求的绘图的主要问题是,在全息视图中,图例通常与样式相关联,这意味着您无法轻松地让图例分别显示过滤器颜色。在

您可以执行此操作并将筛选器添加为悬停列,这意味着您仍然可以访问它:

testdf.hvplot.bar('CountCategory', 'Count', by='Name', stacked=True, rot=90, hover_cols=['Filter'])

barplot1

我可能会在HoloViews中提出一个问题来支持与样式分离的图例。在

相关问题 更多 >