Я пытаюсь построить сложную гистограмму с питоном Matplotlib, и у меня есть положительные и отрицательные значения, которые я хочу нарисовать. Я посмотрел на другие сообщения, рассказывающие о том, как построить диаграммы сложенных гистограмм с положительными и отрицательными значениями, но ни один из них не сделал это с использованием Matplotlib, поэтому я не смог найти свое решение. Stacked bar chart with negative JSON data d3.js stacked bar chart with positive and negative values Highcharts vertical stacked bar chart with negative values, is it possible?Сложенные гистограммы с использованием python matplotlib для положительных и отрицательных значений
Я использовал этот код, чтобы построить столбчатую диаграмму в питона с Matplotlib:
import numpy as np
import matplotlib.pyplot as plt
ind = np.arange(3)
a = np.array([4,-6,9])
b = np.array([2,7,1])
c = np.array([3,3,1])
d = np.array([4,0,-3])
p1 = plt.bar(ind, a, 1, color='g')
p2 = plt.bar(ind, b, 1, color='y',bottom=sum([a]))
p3 = plt.bar(ind, c, 1, color='b', bottom=sum([a, b]))
p4 = plt.bar(ind, d, 1, color='c', bottom=sum([a, b, c]))
plt.show()
Приведенный выше код дает следующий график:
Этот не дает мне правильных результатов. Может ли кто-нибудь сказать мне, как я могу его кодировать, используя дополнительный оператор if else или любой другой способ, который будет отображать как отрицательные, так и положительные значения в столбчатых гистограммах.
Я ожидаю, чтобы получить результаты, как в следующей таблице: expected chart
Теперь первый столбец построена правильно, так как она имеет все положительные значения, но когда питон работает на второй колонке, он получает все из-за отрицательных значений. Как я могу заставить его принять положительное дно при поиске положительных значений и отрицательного дна при построении дополнительных отрицательных значений?
'p1' сам по себе работает так, как вы говорите, вы хотите. Распечатайте 'sum ([a])' и сообщите мне, если это то, что вы хотите? Или вы хотите 'np.sum (a)'? Или ваша проблема в том, что все графики перекрываются? Затем см. Команду 'subplot (...)'. Возможно, вы могли бы нарисовать то, что хотите, чтобы результат выглядел. – roadrunner66
Ваша проблема не очень ясна: что вы ожидаете в результате? –
Это похоже на дублирующий вопрос: http://stackoverflow.com/questions/36766245/how-to-draw-100-stacked-bars-with-mixed-ve-and-ve-values-in-matplotlib – elke