Я пытаюсь отобразить график, который включает в себя мои данные, используя гистограммы с накоплением. Мои данные;
new_total = [[5,3,11,17,2,1,5,38,30,45,15,0],[8,21,13,54,21,7,20,103,114,149,77,15],[0,2,6,7,2,6,2,6,22,0,3,0],[0,9,3,11,10,0,0,26,47,17,7,9],[0,11,4,2,5,1,10,35,35,19,16,0],[0,0,0,2,0,0,2,5,6,16,4,3]]
Он имеет 6 элементов, и каждый элемент представляет цвет (и каждый элемент имеет 12 подэлементов). Объяснить с моими кодами и картинками;
width = 0.5
ind = np.arange(N) # the x locations for the groups
temp = []
myMax = 0
myCount = 0
for x in range(len(movies)):
myCount = myCount + 1
if myCount == 1:
self.axes.bar(ind, new_total[0], width)
temp = np.zeros(N)
else:
if x == len(movies) - 1:
myMax = max(np.add(temp, new_total[x - 1]))
self.axes.bar(ind, new_total[x], width, bottom=np.add(temp, new_total[x - 1]))
Если я использую этот код выше; отображается этот график . Как вы видите, например; фиолетовая область где-то в синей области. И все цифры (как вы видите слева) неверны.
Но если я использую этот код ниже;
self.axes.bar(ind, new_total[0], width)
self.axes.bar(ind, new_total[1], width, bottom=np.array(new_total[0]))
self.axes.bar(ind, new_total[2], width, bottom=np.add(new_total[0],new_total[1])) #I could use np.array(new_total[0]) + np.array(new_total[1])
self.axes.bar(ind, new_total[3], width, bottom=np.array(new_total[0]) + np.array(new_total[1]) + np.array(new_total[2]))
self.axes.bar(ind, new_total[4], width, bottom=np.array(new_total[0]) + np.array(new_total[1]) + np.array(new_total[2]) + np.array(new_total[3]))
self.axes.bar(ind, new_total[5], width, bottom=np.array(new_total[0]) + np.array(new_total[1]) + np.array(new_total[2]) + np.array(new_total[3]) + np.array(new_total[4]))
Этот график отображается, и это тот график, который я хочу, который отлично показывает цвета и общее количество. Но я думаю, что это решение настолько примитивно. Потому что иногда new_total
будет иметь 5 или 7 элементов. Можете ли вы исправить мое решение идеальным способом (он может иметь цикл или что-то еще)