Как сделать несколько графиков из мультииндексированного DataFrame pandas на основе одного из уровней мультииндекса?
У меня есть результаты модели с использованием разных технологий в разных сценариях, результаты могут выглядеть примерно так:
import numpy as np
import pandas as pd
df=pd.DataFrame(abs(np.random.randn(12,4)),columns=[2011,2012,2013,2014])
df['scenario']=['s1','s1','s1','s2','s2','s3','s3','s3','s3','s4','s4','s4']
df['technology'=['t1','t2','t5','t2','t6','t1','t3','t4','t5','t1','t3','t4']
dfg=df.groupby(['scenario','technology']).sum().transpose()
dfg будет использовать технологии каждый год для каждого сценария. Я хотел бы иметь подзаговор для каждого сценария с легендой.
Если я просто использую аргумент subplots = True, тогда он строит все возможные комбинации (12 подзаголовков)
dfg.plot(kind='bar',stacked=True,subplots=True)
Основываясь на этом ответе, я стал ближе к тому, что искал.
f,a=plt.subplots(2,2)
fig1=dfg['s1'].plot(kind='bar',ax=a[0,0])
fig2=dfg['s2'].plot(kind='bar',ax=a[0,1])
fig2=dfg['s3'].plot(kind='bar',ax=a[1,0])
fig2=dfg['s3'].plot(kind='bar',ax=a[1,1])
plt.tight_layout()
но результат не идеален, у каждого подзаговора своя легенда ... и это затрудняет чтение. Должен быть более простой способ создания подзаголовков из мультииндексированных фреймов данных ... Спасибо!
РЕДАКТИРОВАТЬ1: Тед Петру предложил хорошее решение с использованием диаграммы множителей морского дна, но у меня есть две проблемы. У меня уже есть определенный стиль, и я бы предпочел не использовать стиль seaborn (одним из решений может быть изменение параметров seaborn). Другая проблема заключается в том, что я хотел использовать линейчатую диаграмму с накоплением, что требует значительных дополнительных настроек < / а>. Есть ли шанс сделать что-то подобное с Matplotlib?
import seaborn.apionly as sns
- person Ramon Crehuet   schedule 12.05.2017