Как иметь группы сложенных столбиковPython

Программы на Python
Ответить
Anonymous
 Как иметь группы сложенных столбиков

Сообщение Anonymous »

Вот как выглядит мой набор данных:
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 я получил это:
Изображение

Это почти то, что я хочу. Я бы хотел, чтобы панель была кластеризована по индексу, чтобы было что-то визуально понятное.
Бонус: чтобы метка x не была лишней, что-то вроде:
df1 df2 df1 df2
_______ _______ ...
A B


Подробнее здесь: https://stackoverflow.com/questions/227 ... acked-bars
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»