¿Cómo obtener múltiples ventanas que contengan múltiples gráficos usando matplotlib?

Tengo 200 productos y quiero trazar el gráfico de time vs parameter . He creado un código que traza gráficos para 20 productos y los muestra en una ventana.

Me gustaría saber si hay una manera de trazar 200 gráficos como subplots en 10 ventanas diferentes, con cada ventana que contiene 20 gráficos cada una.

Mi código

 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() 

Este código me da una ventana que contiene 20 subplots, como se muestra a continuación

introduzca la descripción de la imagen aquí

Solo necesita ajustar su código existente en un bucle for sobre diferentes figuras, cada una con 20 subfiguras. El truco aquí es, entonces, modificar los valores clave utilizando un índice (20*i)+key para obtener las 200 claves. Para i=0 (primera figura), obtendrá 1, 2, 3, … 19, 20. Para i=1 (segunda figura), obtendrá 21, 22, 23, … 39, 40 y pronto.

A continuación se muestra una versión modificada de su código. No tengo los datos, así que no puedo probarlos. Si no funciona, hágamelo saber. Como lo señaló @DavidG, plt.show() debería estar fuera de los bucles 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