Гистограммы с накоплением подграфиков

У меня есть три гистограммы с накоплением, которые я правильно отобразил, но я хочу отображать их рядом (в отличие от трех разных графиков (один под другим)).

Текущий код, который отображает три графика по отдельности (где axX_Group - это кадры данных, в которых есть мои данные).

ax1_Group.plot(kind='barh', stacked=True, figsize=(6,15), title='Makes and Years (Pre 2000)')
ax2_Group.plot(kind='barh', stacked=True, figsize=(6,20), title='Makes and Years (2000-2009)')
ax3_Group.plot(kind='barh', stacked=True, figsize=(6,20), title='Makes and Years (2010+)')

Я знаю, что мне нужно использовать функцию подзаголовка для построения графиков на одной фигуре, но я не могу понять, как правильно назначить текущие графики.

Моя основная проблема заключается в том, что все примеры, с которыми я столкнулся в Интернете, используют функцию подзаговора для назначения местоположения графика (что я понимаю), но затем строят графики как функцию X и Y - следующим образом:

 figure = plt.figure()
 ax1 = figure.add_subplot(311)
 ax2 = figure.add_subplot(312)
 ax3 = figure.add_subplot(313)

 ax1.plot(x1,y1)
 ax2.plot(x2,y2)
 ax3.plot(x3,y3)

Мне нужно выяснить, как использовать часть ax1.plot(X, Y), чтобы я мог вызвать .plot(гистограмма с накоплением)

    ax1_Group.plot(kind='barh', stacked=True, figsize=(6,15), title='Makes and Years (Pre 2000)')

Итак, я добрался до этого, но он не работает:

fig = plt.figure()
ax1_Group = fig.add_subplot(131)
ax2_Group = fig.add_subplot(132)
ax3_Group = fig.add_subplot(133)
ax1_Group.plot(ax1_Group.plot(kind='barh', stacked=True, figsize=(6,15), title='Breakdown of Makes and Years (Pre 2000)'))
ax2_Group.plot(ax2_Group.plot(kind='barh', stacked=True, figsize=(6,20), title='Breakdown of Makes and Years (2000-2009)'))
ax3_Group.plot(ax3_Group.plot(kind='barh', stacked=True, figsize=(6,20), title='Breakdown of Makes and Years (2010+)'))

Я пробовал множество вещей и не могу понять. Любая помощь будет принята с благодарностью.


person CoachB    schedule 16.07.2015    source источник
comment
Делает ли добавление ключевого слова subplots=True то, что вы хотите (как pandas.pydata.org/ pandas-docs/stable/)? Если нет, есть ли шанс, что вы могли бы включить эскиз именно того, что вы хотите? Кроме того, как вы говорите, dataframe, я предполагаю, что вы используете Pandas? Стоит добавить в качестве тега. В худшем случае вы можете извлечь данные с помощью чего-то вроде x1, y1 = ax1_Group.values и построить график, как во втором примере.   -  person Ed Smith    schedule 17.07.2015


Ответы (2)


Вы можете использовать следующий код:

plt.figure()
ax1 = plt.subplot(131)
ax1_Group.plot(ax1_Group.plot(ax = ax1, kind='barh', stacked=True, figsize=(6,15), title='Breakdown of Makes and Years (Pre 2000)'))

ax2 = plt.subplot(132)
ax2_Group.plot(ax2_Group.plot(ax = ax2, kind='barh', stacked=True, figsize=(6,20), title='Breakdown of Makes and Years (2000-2009)'))

ax3 = plt.subplot(133)
ax3_Group.plot(ax3_Group.plot(ax = ax3, kind='barh', stacked=True, figsize=(6,20), title='Breakdown of Makes and Years (2010+)'))
person Naik    schedule 30.06.2019
comment
Пожалуйста, объясните следующий код для OP и будущих читателей. - person Parfait; 30.06.2019

Я думаю, что ответ на вашу проблему приведен здесь, в основном,

ax = ax1_Group.plot(kind='barh', 
                    stacked=True, 
                    figsize=(6,15), 
                    title='Makes and Years (Pre 2000)')
ax2_Group.plot(ax=ax, 
               kind='barh', 
               stacked=True, 
               title='Makes and Years (2000-2009)')
ax3_Group.plot(ax=ax, 
               kind='barh', 
               stacked=True, 
               title='Makes and Years (2010+)')
person Ed Smith    schedule 17.07.2015