我需要帮助使用matlibplot在Python中制作一组堆叠条形图。我的基本代码如下,但是我的问题是如何有效地为第2个元素之外的任何元素生成底部值。我可以正确堆叠示例图(始终从底部到顶部为a、b、c、d)。
import numpy as np
import matplotlib.pyplot as plt
ind = np.arange(3)
a = [3,6,9]
b = [2,7,1]
c = [0,3,1]
d = [4,0,3]
p1 = plt.bar(ind, a, 1, color='#ff3333')
p2 = plt.bar(ind, b, 1, color='#33ff33', bottom=a)
p3 = plt.bar(ind, c, 1, color='#3333ff', bottom=[a[j] +b[j] for j in range(len(a))])
p4 = plt.bar(ind, d, 1, color='#33ffff', bottom=[a[j] +b[j] +c[j] for j in range(len(a))])
plt.show()
我的最终代码可能会有很多条,而不断扩展的函数 bottom = [...] 可能不是最好的解决方案。如果您能解释一下我需要如何推导出这个值,那就太好了。是否有一个 numpy 函数可以做到这点。
非常感谢!!! 附言:我已经搜索过答案,但我不明白我找到的东西。
legends = [] i = 0 for column in df.columns: legends.append(mpatches.Patch(color=stacked_colors[i], label=column)) i+=1 plt.legend(handles=legends)
- canary_in_the_data_mine