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.
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.
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
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']]
.
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()
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.