如何使用pandas创建堆叠的子图

时间:2015-09-21 17:51:42

标签: python pandas matplotlib

我想为我的数据创建堆积的子图。我希望通过'类型','周'来创建子图。作为我的x轴,'得分'被堆叠。

function max_shipping_filter( $shipping_total ) {
    $max = 79.00;
    return $shipping_total > $max ? $max : $shipping_total;
}
add_filter( 'woocommerce_order_amount_total_shipping', 'max_shipping_filter' );

这就是我现在所拥有的,如果我添加一个参数" subplot = True'

np.random.seed(1234)
test = pd.DataFrame({'week':[1,1,1,1,1,1,2,2,2,2,2,2],
                     'score':np.random.uniform(0,1,12),
                    'type': [0,1,0,1,0,1,0,1,0,1,0,1],
                     'type2':[3,3,4,4,5,5,3,3,4,4,5,5]})

enter image description here

2 个答案:

答案 0 :(得分:3)

我认为 - 但我不确定 - 很难合并stackedsubplots选项。所以这是一个解决方案 - 我希望 - 产生预期的输出,但可能会有所改进。

# Test data
np.random.seed(1234)
test = pd.DataFrame({'week':[1,1,1,1,1,1,2,2,2,2,2,2],
                     'score':np.random.uniform(0,1,12),
                    'type': [0,1,0,1,0,1,0,1,0,1,0,1],
                     'type2':[3,3,4,4,5,5,3,3,4,4,5,5]})
grouped = test.groupby(['type','week','type2']).agg('sum')

# Preparing plots
fig, axes = plt.subplots(nrows=2)

for group_name, group in grouped.groupby(level=0):
    group.index = group.index.droplevel(0)
    group = group.unstack(1)
    group.columns = group.columns.droplevel()
    group.plot(kind='bar', stacked=True, ax=axes[group_name], title='type: ' + str(group_name))

result

答案 1 :(得分:2)

如果我理解正确,你可以添加stacked = True参数吗?

test.groupby(['week','type','type2']).agg('sum').unstack(1).plot(kind='bar', stacked=True)

enter image description here