Мне нужна помощь в создании набора штабелированных гистограмм в python с matlibplot. Мой базовый код ниже, но мои проблемы в том, как создать значение для внизу для любого элемента за пределами второго эффективно. Я могу получить пример графика правильно стека (всегда а, б, в, г снизу вверх)Более эффективная гистограмма диаграммы matplotlib - как рассчитать нижние значения
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()
Мой окончательный код может иметь очень большое количество баров и постоянно расширяется функция низ = [.. .] не может быть лучшим решением. Было бы здорово, если бы вы также могли объяснить, как мне нужно получить ценность. Есть функция numpy.
спасибо! PS Я искал ответ, но я не понимал, что я могу найти.
Спасибо - как я могу получить пробелы между барами? – Matt
Я обновил код, чтобы разрешить пробелы. Это на самом деле довольно просто, если вы вычитаете фиксированную сумму из ширины баров, тогда она эффективно сокращает их. После этого это просто вопрос игры с xlims. В главном вызове функции есть два новых параметра, зазор и конечные галочки. Нижние две фотографии показывают примеры использования. – minillinim
Любовь @ minillinim пакет. Это было слишком легко. Чтобы добавить легенду, если вы устанавливаете цвета с таким массивом, как 'stacked_colors = ['# 2166ac', '# fee090', '# fdbb84']' и 'cols = stacked_colors', тогда легко добавить легенду участок выполнен из панд DataFrame: 'легенды = [] = 0 для столбца в df.columns: legends.append (mpatches.Patch (цвет = stacked_colors [I], метка = столбец)) I + = 1 plt.legend (handles = legendends) ' –