Проблема в горизонтальной гистограмме в matplotlib - PullRequest
0 голосов
/ 21 февраля 2020

Ниже приведен мой код, который создает горизонтальную столбчатую диаграмму:

import matplotlib.pyplot as plt

year = [2014]  
tutorial_public = [30]  
tutorial_premium = [10]
tutorial_premiumx = [20] 

fig, axs = plt.subplots(1)

axs.barh(year, tutorial_premium, color="yellow")  
axs.barh(year, tutorial_public, left=tutorial_premium, color="red")
axs.barh(year, tutorial_premiumx, left=tutorial_public, color="blue")

Он производит следующее изображение: enter image description here

Что я нахожу здесь абсурдным? эта длина красной части только 20, но она должна быть 30, потому что tutorial_public = [30]. Что я здесь не так делаю?

1 Ответ

2 голосов
/ 21 февраля 2020

Ширина красной полосы равна 30, ваша проблема в том, что вы скрыли часть полосы с синей полосой (попробуйте прокомментировать последнюю строку кода)

Вам нужно настроить аргумент left= вашего третьего barh (обратите внимание, что я преобразовал ваш список в numpy массивы для упрощения арифметических c операций):

import matplotlib.pyplot as plt

year = [2014]  
tutorial_public = np.array([30])
tutorial_premium = np.array([10])
tutorial_premiumx = np.array([20])

fig, axs = plt.subplots(1)

axs.barh(year, tutorial_premium, color="yellow")  
axs.barh(year, tutorial_public, left=tutorial_premium, color="red")
axs.barh(year, tutorial_premiumx, left=tutorial_premium+tutorial_public, color="blue")
...