我想用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不起作用......
答案 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)