簡體   English   中英

當我運行相同的python代碼但處於for循環中時,為什么matplotlib條形圖會更改

[英]Why does my matplotlib bar diagram change when I am running the same python code but in a for-loop

相同的代碼,但是用不同的方式編寫的代碼,給我不同的結果。

我想在matplotlib中繪制一個堆積的條。 當我不使用for循環時,它可以完美繪制。

plt.figure(figsize=(15,10))
plt.subplot(221)

plt.bar (prod_names, x[0], label=age_names[0])
plt.bar (prod_names, x[1], bottom=x[0], label=age_names[1])
plt.bar (prod_names, x[2], bottom=x[1] + x[0], label=age_names[2])
plt.bar (prod_names, x[3], bottom=x[2] + x[1] + x[0], label=age_names[3])
plt.bar (prod_names, x[4], bottom=x[3] + x[2] + x[1] + x[0], label=age_names[4])
plt.bar (prod_names, x[5], bottom=x[4] + x[3] + x[2] + x[1] + x[0], label=age_names[5])

plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)

好吧:

好吧

但是,當我運行時:

plt.figure(figsize=(15,10))
plt.subplot(221)

for i in range(6):
    bottom = [0]*len(x[0])
    for j in range (i):
        bottom += x[j]
    plt.bar (prod_names, x[i], bottom, label=age_names[i])


plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)

我壞了吧:

好吧

問題出在您的變量上,第三位是寬度,因此它使用bottom變量來確定條的寬度而不是其底部的高度。 因此,如果您僅更改以下行,它應該可以工作:

plt.bar(prod_names, x[i], bottom=bottom, label=age_names[i])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM