Как получить несколько окон, содержащих несколько графиков, используя matplotlib?

1

У меня есть 200 продуктов, и я хочу построить график time vs parameter. Я придумал код, который строит графики для 20 продуктов и отображает их в одном окне.

Я хотел бы знать, есть ли способ построить 200 графиков в виде вспомогательных участков в 10 разных окнах, каждое из которых содержит 20 графиков в каждом.

Мой код

grouped = dataset.groupby('product_number')
ncols = 4
nrows = int(np.ceil(grouped.ngroups/40))
fig, axes = plt.subplots(figsize=(12,4), nrows = nrows, ncols = ncols)

for (key, ax) in zip(grouped.groups.keys(), axes.flatten()):
    grouped.get_group(key).plot(x='TimeElapsed', y='StepID', ax=ax, sharex = True, sharey = True)
    ax.set_title('product_number=%d'%key)
ax.legend()
plt.show()

Этот код дает мне окно, содержащее 20 участков, как показано ниже

Изображение 174551

Теги:
pandas
matplotlib
python-3.x
pandas-groupby

1 ответ

0

Вам просто нужно обернуть существующий код в цикл for для разных фигур, каждая из которых содержит 20 подфигур. Хитрость заключается в том, чтобы затем изменить значения ключей, используя индекс (20*i)+key чтобы получить все 200 ключей. Для i=0 (первая цифра) вы получите 1, 2, 3,... 19, 20. Для i=1 (вторая цифра) вы получите 21, 22, 23,... 39, 40 и скоро.

Ниже приведена модифицированная версия вашего кода. У меня нет данных, поэтому я не могу их опробовать. Если это не сработает, дайте мне знать. Как указывает @DavidG, plt.show() должен быть вне циклов for.

grouped = dataset.groupby('product_number')
ncols = 4
nrows = int(np.ceil(grouped.ngroups/40))

for i in range(10):
    fig, axes = plt.subplots(figsize=(12,4), nrows = nrows, ncols = ncols)

    for (key, ax) in zip(grouped.groups.keys(), axes.flatten()):
        grouped.get_group((20*i)+key).plot(x='TimeElapsed', y='StepID', ax=ax, sharex = True, sharey = True)
        ax.set_title('product_number=%d'%((20*i)+key))
    ax.legend()
plt.show() # Mind the indentation
  • 1
    Может быть undentdent plt.show() чтобы все цифры появлялись?
  • 0
    @DavidG: Спасибо за указание на это. Я редактировал это
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню