Подиндекс многоиндексных данных по уровням - PullRequest
1 голос
/ 16 мая 2019

Это мои мультииндексные данные.

Month   Hour    Hi
1       9       84.39
       10       380.41
       11       539.06
       12       588.70
       13       570.62
       14       507.42
       15       340.42
       16       88.91
2       8       69.31
        9       285.13
       10       474.95
       11       564.42
       12       600.11
       13       614.36
       14       539.79
       15       443.93
       16       251.57
       17       70.51

Я хочу создать субплот, где каждый субплот представляет Месяц. ось х - это час, ось у - Hi соответствующего месяца. Это дает прекрасный подход следующим образом:

levels = df.index.levels[0]
fig, axes = plt.subplots(len(levels), figsize=(3, 25))

for level, ax in zip(levels, axes):
    df.loc[level].plot(ax=ax, title=str(level))
plt.tight_layout()

enter image description here

Я хочу сделать 1x2 подзаговора вместо вертикально расположенного, как указано выше. Позже, с большими данными, я хочу сделать 3x4 подзаговора или даже большего измерения.
Как это сделать?

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

Передать аргументы строк и столбцов в plt.subplots

levels = df.index.levels[0]
#         Number of rows v
fig, axes = plt.subplots(1, len(levels), figsize=(6, 3))

for level, ax in zip(levels, axes):
    df.loc[level].plot(ax=ax, title=str(level))
plt.tight_layout()

enter image description here

2 голосов
/ 16 мая 2019

Вы можете сделать это в pandas

df.Hi.unstack(0).fillna(0).plot(kind='line',subplots=True, layout=(1,2))

enter image description here

...