Итак, вот как выглядит мой набор данных:
In [1]: df1=pd.DataFrame(np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"])
In [2]: df2=pd.DataFrame(np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"])
In [3]: df1
Out[3]:
I J
A 0.675616 0.177597
B 0.675693 0.598682
C 0.631376 0.598966
D 0.229858 0.378817
In [4]: df2
Out[4]:
I J
A 0.939620 0.984616
B 0.314818 0.456252
C 0.630907 0.656341
D 0.020994 0.538303
Я хочу, чтобы для каждого кадра данных была построена диаграмма с уложенными штрихами, но поскольку у них одинаковый индекс, я бы хотел иметь 2 стековых столбца на индекс.
Я попытался построить оба на одинаковых осях:
In [5]: ax = df1.plot(kind="bar", stacked=True)
In [5]: ax2 = df2.plot(kind="bar", stacked=True, ax = ax)
Но он перекрывается.
Затем я попытался сначала выполнить два набора данных:
pd.concat(dict(df1 = df1, df2 = df2),axis = 1).plot(kind="bar", stacked=True)
но здесь все укладывается
Моя лучшая попытка:
pd.concat(dict(df1 = df1, df2 = df2),axis = 0).plot(kind="bar", stacked=True)
Что дает:
Это в основном то, что я хочу, за исключением того, что я хочу, чтобы панель была заказана как
(df1, A) (df2, A) (df1, B) (df2, B) и т.д.
Я думаю, есть трюк, но я не могу его найти!
После ответа @bgschiller я получил следующее:
Это почти то, что я хочу. Я бы хотел, чтобы бар был сгруппирован по индексу, чтобы иметь что-то визуально прозрачное.
Бонус: наличие х-метки не избыточно, что-то вроде:
df1 df2 df1 df2
_______ _______ ...
A B
Спасибо за помощь.