![](/img/trans.png)
[英]Turn line chart into bar plot in python code for-loop with 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.