web-dev-qa-db-fra.com

Création de plusieurs graphiques dans la même cellule Notebook IPython

J'ai démarré mon ordinateur portable IPython avec

ipython notebook --pylab inline

Ceci est mon code dans une cellule

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

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

Je voudrais dessiner chaque ligne sur un graphique séparé. Et ce serait bien si les cartes étaient côte à côte, pas les unes après les autres.

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

70
WebOrCode

Créez d'abord les multiples axes et transmettez-les à la fonction de tracé 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.

74
Rutger Kassies

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

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

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

df.plot(subplots=True)

Si le cadre de données comporte plus de deux séries et que vous souhaitez uniquement les représenter, vous devrez remplacer df par df[['korisnika','osiguranika']].

7
Luciano

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 le package 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()
6
mgoldwasser

Je ne sais pas s'il s'agit d'une nouvelle fonctionnalité, mais cela va se tracer sur des figures distinctes:

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

alors que cela va tracer sur le même chiffre: (juste 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 que je voulais qu'ils s'inspirent du même chiffre. Votre question était donc ma réponse.

1
steven