python中的多个栏

时间:2014-07-21 16:14:03

标签: python matplotlib histogram

我想用matplotlib在彼此之间绘制多个条形图。 我用过:

a=(45,22,17,28)

b=(32,17,15,27)

c=(15,18,22,25)

rects1 = plt.bar(index, a, bar_width, alpha=opacity, color='b',error_kw=error_config,  label='A')

rects2 = plt.bar(index, b, bar_width,alpha=opacity, color='r', error_kw=error_config,   label='B',bottom=a)

rects4 = plt.bar(index , c, bar_width, alpha=opacity, color='y', error_kw=error_config, label='C',bottom=a+b)

我希望c超过b,但是底部= a + b不起作用......

2 个答案:

答案 0 :(得分:2)

失败是因为您无法添加元组。你需要的是numpy数组:

import numpy as np

a=np.array([45,22,17,28])

b=np.array([32,17,15,27])

c=np.array([15,18,22,25])

答案 1 :(得分:1)

这应该是您正在寻找的配置:

您必须使用zorder>指定索引c a和> b,即(index c,...,zorder = 3); (index b,...,zorder = 2); (索引a,...,zorder = 1)。您的代码应如下所示:

a=(45,22,17,28)

b=(32,17,15,27)

c=(15,18,22,25)

rects1 = plt.bar(index, a, bar_width, alpha=opacity, color='b',error_kw=error_config, label='A', zorder=1)

rects2 = plt.bar(index, b, bar_width,alpha=opacity, color='r', error_kw=error_config, label='B', zorder=2)

rects4 = plt.bar(index, c, bar_width, alpha=opacity, color='y', error_kw=error_config, label='C', zorder=3)