107 votes

Créer plus d'un graphique dans une même cellule IPython Notebook

J'ai commencé mon IPython Notebook avec

ipython notebook --pylab inline

Voici mon code dans une cellule

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

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

J'aimerais dessiner chaque ligne sur un graphique distinct. Et ce serait formidable si les graphiques étaient placés l'un à côté de l'autre, et non l'un après l'autre.

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

137voto

Tooblippe Points 483

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

   plt.plot(a)
   plt.show()
   plt.plot(b)
   plt.show()

100voto

Rutger Kassies Points 7713

Créez d'abord les axes multiples et passez-les à la fonction plot de Pandas, comme suit :

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

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

Vous obtenez toujours une figure, mais avec deux tracés différents l'un à côté de l'autre.

16voto

mgoldwasser Points 377

Quelque chose comme ça :

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 l'option seaborn pour le traçage :

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

12voto

Luciano Points 184

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

df.plot(subplots=True)

Si le cadre de données contient plus de deux séries, et que vous voulez seulement tracer ces deux séries, vous devez remplacer df con df[['korisnika','osiguranika']] .

3voto

steven Points 228

Je ne sais pas s'il s'agit d'une nouvelle fonctionnalité, mais le tracé se fera sur des chiffres séparés :

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

alors que ceci va tracer sur la même figure : (comme le code dans l'op)

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

J'ai trouvé cette question parce que j'utilisais la première méthode et que je voulais qu'ils soient représentés sur la même figure, donc votre question était en fait ma réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X