Créez plus d'un graphique dans la même cellule IPython Notebook

J'ai commencé mon cahier IPython avec

ipython notebook --pylab inline

C'est mon code dans une cellule

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

Cela fonctionne bien, il va dessiner deux lignes, mais sur le même graphique.

Je voudrais dessiner chaque ligne sur un graphique séparé. Et ce serait formidable si les cartes serait à côté de l'autre, pas l'un après l'autre.

Je sais que je peux mettre la deuxième ligne dans la cellule suivante, et ensuite j'obtiendrais deux graphiques. Mais je voudrais les graphiques proches les uns des autres, parce qu'ils représenter la même unité logique.

59
demandé sur hooy 2013-05-06 10:10:36

5 réponses

Faites d'abord les axes multiples et passez-les à la fonction de tracé des Pandas, comme:

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

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

Il vous donne toujours 1 chiffre, mais avec deux parcelles différentes l'une à côté de l'autre.

61
répondu Rutger Kassies 2013-05-06 06:18:52

Vous pouvez également appeler la fonction show () après chaque tracé. par exemple

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

Voir l'exemple au - http://nbviewer.ipython.org/6151560

64
répondu Tooblippe 2013-08-04 19:21:25

Une autre façon, pour la variété. Bien que ce soit un peu moins flexible que les autres. Malheureusement, les graphiques apparaissent l'un au-dessus de l'autre, plutôt que côte à côte, ce que vous avez demandé dans votre question initiale. Mais il est très concis.

df.plot(subplots=True)

Si le dataframe a plus que les deux séries, et que vous voulez seulement tracer ces deux, vous devrez remplacer df par df[['korisnika','osiguranika']].

6
répondu Luciano 2014-07-26 09:03:01

Quelque Chose comme ceci:

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

Notez que cela fonctionnera également si vous utilisez le paquet seaborn pour tracer:

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
répondu mgoldwasser 2017-10-24 21:42:04

Je ne sais pas si c'est une nouvelle fonctionnalité, mais cela va tracer sur des figures séparées:

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

Alors que cela va tracer sur la même figure: (tout comme le code dans l'op)

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

J'ai trouvé cette question parce que j'utilisais l'ancienne méthode et je voulais qu'ils tracent sur la même figure, donc votre question était en fait ma réponse.

1
répondu steven 2016-08-23 14:29:58