Haga más de un gráfico en la misma celda del cuaderno IPython


He comenzado mi cuaderno IPython con

ipython notebook --pylab inline

Este es mi código en una celda

df['korisnika'].plot()
df['osiguranika'].plot()

Esto está funcionando bien, dibujará dos líneas, pero en el mismo gráfico.

Me gustaría dibujar cada línea en un gráfico separado. Y sería genial si los gráficos estuvieran uno al lado del otro, no uno tras otro.

Sé que puedo poner la segunda línea en la siguiente celda, y luego obtendría dos gráficos. Pero me gustaría que los gráficos cerca uno del otro, porque ellos representan la misma unidad lógica.

Author: hooy, 2013-05-06

5 answers

Primero haga los ejes múltiples y páselos a la función de trazado de Pandas, como:

fig, axs = plt.subplots(1,2)

df['korisnika'].plot(ax=axs[0])
df['osiguranika'].plot(ax=axs[1])

Todavía le da 1 figura, pero con dos parcelas diferentes una al lado de la otra.

 61
Author: Rutger Kassies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-06 06:18:52

También puede llamar a la función show() después de cada gráfico. por ejemplo,

   plot(a)
   show()
   plot(b)
   show()

Ver ejemplo en - http://nbviewer.ipython.org/6151560

 64
Author: Tooblippe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-04 19:21:25

Otra manera, para la variedad. Aunque esto es algo menos flexible que los otros. Desafortunadamente, los gráficos aparecen uno encima del otro, en lugar de uno al lado del otro, que usted solicitó en su pregunta original. Pero es muy conciso.

df.plot(subplots=True)

Si el dataframe tiene más de las dos series, y solo desea trazar esas dos, deberá reemplazar df con df[['korisnika','osiguranika']].

 6
Author: Luciano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-26 09:03:01

Algo como esto:

import matplotlib.pyplot as plt
... code for plot 1 ...
plt.show()
... code for plot 2...
plt.show()

Tenga en cuenta que esto también funcionará si está utilizando el paquete seaborn para trazar:

import matplotlib.pyplot as plt
import seaborn as sns
sns.barplot(... code for plot 1 ...) # plot 1
plt.show()
sns.barplot(... code for plot 2 ...) # plot 2
plt.show()
 5
Author: mgoldwasser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-24 21:42:04

No se si esta es una nueva funcionalidad, pero esto se trazará en figuras separadas:

df.plot(y='korisnika')
df.plot(y='osiguranika')

Mientras que esto trazará en la misma figura: (al igual que el código en el op)

df.plot(y=['korisnika','osiguranika'])

Encontré esta pregunta porque estaba usando el método anterior y quería que trazaran en la misma figura, por lo que su pregunta era en realidad mi respuesta.

 1
Author: steven,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-23 14:29:58