Python 如何使用hvplot绘制堆叠条形图?

Python 如何使用hvplot绘制堆叠条形图?,python,holoviews,hvplot,holoviz,Python,Holoviews,Hvplot,Holoviz,我正在尝试使用hvplot绘制一个包含3个分类变量和1个数字变量的堆叠条形图。 有人知道如何正确绘制堆叠条形图吗? 请求类型“D”和“S”没有以不同的颜色显示。 数据: 我的代码: by_type=test_df.groupby(['type','Fiscal Period','Request type']).agg({'Count':np.sum}) plot_by_type=by_type.hvplot.bar('type','Count',by=['Fiscal Period','Re

我正在尝试使用hvplot绘制一个包含3个分类变量和1个数字变量的堆叠条形图。

有人知道如何正确绘制堆叠条形图吗?
请求类型“D”和“S”没有以不同的颜色显示。

数据:

我的代码:

by_type=test_df.groupby(['type','Fiscal Period','Request type']).agg({'Count':np.sum})
plot_by_type=by_type.hvplot.bar('type','Count',by=['Fiscal Period','Request type',stacked=False,
翻转xaxis=False,ylabel='Total Count',反转=False,
cmap=[“银”、“黄花”])
按类型绘图
下面是我得到的图:

目前,在HoloView(1.13)中,条形图的分类变量不可能超过2个。

另请参见此github问题:


但是,您可以这样做:
诀窍是将一个分类变量放入
x
,将一个分类变量放入
by
关键字,将其他分类变量放入
groupby
关键字

将熊猫作为pd导入
导入hvplot.pandas
#创建示例数据
df=pd.DataFrame({
‘类型’:[‘A’、‘A’、‘A’、‘B’、‘B’、‘B’],
‘会计期间’:[‘2019-01’、‘2019-01’、‘2019-02’、‘2019-02’、‘2019-01’、‘2019-01’、‘2019-02’、‘2019-02’],
“请求类型”:['S','D','S','D','S','D','S','D'],
“值”:范围(1,9),
})
#为每种类型创建一个单独的条形图
布局=df.hvplot.bar(
x=‘会计期间’,
y='values',
按class='Request Type',
groupby='Type',
堆叠=正确,
cmap='Category20',
图例=“左上方”,
宽度=400,
xlabel=“”,
).layout()
#使绘图更美观,使其看起来更像一个聚集条形图
plotA=layout['A']。选项(title='Type:A')
plotB=layout['B']。选项(show_legend=False,yaxis=None,ylabel='',title='Type:B')
#再次添加单独的绘图
(plotA+plotB).opts(title='显示每个会计期间的计数、请求类型和类型')


结果图:



作为奖励,此代码将为您提供与上面相同的结果:

def create_subplot(type_selected):
    plot = df[df['Type'] == type_selected].hvplot.bar(
        x='Fiscal Period', 
        y='values', 
        by='Request Type', 
        stacked=True, 
        cmap='Category20', 
        label='Type: ' + type_selected,
        legend='top_left',
        width=400,
        xlabel='',
        ylabel='',
    )
    return plot

plotA = create_subplot('A')
plotB = create_subplot('B').opts(show_legend=False, yaxis=None)

(plotA + plotB).opts(title='Showing the counts per Fiscal Period, Request Type and Type')

我想知道为什么当我运行上面显示的代码时,并排图中的PlotB总是空的。每个地块都可以。我正在使用最新的github版本的HoloViews。嗨,大卫,我想在这里提供帮助。你在使用我的样本数据吗?在上面的两个代码示例中都是空的吗?它在某个点上不是空的吗,比如说在使情节变得美好之前?您是否安装了这样的最新版本:嗨,Sander,我正在使用您提供的两个示例代码,并且两个示例代码的plotB都为空。我已经安装了HoloViews和hvPlot的最新版本。但是,两个代码示例都在另一个数据集上工作。我感谢你的帮助。我从你的工作中学到了很多奇怪的。。。因为plotA和plotB的创建方式完全相同。。。所以它可以在你自己的数据上工作?但不是在我的样本数据上?因为我只是再次尝试确定,我看到了两个情节。如果我尝试创建子图('C'),那么它将保持为空,因为类别C不存在。