Matplotlib -堆叠条形图,底部

i86rm4rw  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(129)

我很难理解为什么我在matplotlib中的堆叠条形图不能正常工作,这与我的plt.bar()函数中的“bottom”参数有关
如果我硬编码我想要绘制的值,一切都正常工作:

import matplotlib.pyplot as plt

var1 = 'Bar1' 
var2 = .2403 
var3 = .1256
var4 = .1158

plt.bar(var1, var2, color='green')
plt.bar(var1, var3, bottom=var2, color='blue')
plt.bar(var1, var4, bottom=(var2+var3), color='red')

下面是正确的输出和它应该是什么样子:

在我的代码中,我有一个函数,它生成列表中的一些值,我将迭代地绘制这些值。下面是做一些数学运算后的值。每个列表中只有1个项目:

var1 = 'Bar1'
var2 = [.2403]
var3 = [.1256]
var4 = [.1158]

现在我尝试使用相同的代码来绘制这些:

plt.bar(var1, var2, color='green')
plt.bar(var1, var3, bottom=var2, color='blue')
plt.bar(var1, var4, bottom=(var2+var3), color='red')

但是结果看起来不对。我不确定这里发生了什么:

inkz8wg9

inkz8wg91#

感谢上面的评论,我有一个解决方案:

for i in range(0, len(var1)):
    plt.bar(var1, var2, color='green')
    plt.bar(var1, var3, bottom=var2[i], color='blue')
    plt.bar(var1, var4, bottom=(var2[i]+var3[i]), color='red')
rqmkfv5c

rqmkfv5c2#

加法运算符不会将两个列表中的值相加,而是将它们合并到一个列表中。要将两个列表中的值相加,除了+之外,还必须使用sum函数。

var1 = 'Bar1'
var2 = [.2403]
var3 = [.1256]
var4 = [.1158]

plt.bar(var1, var2, color='green')
plt.bar(var1, var3, bottom=var2, color='blue')
plt.bar(var1, var4, bottom=sum(var2+var3), color='red')

相关问题