Considérez le code suivant s'exécutant dans iPython/Jupyter Notebook:
from pandas import *
%matplotlib inline
ys = [[0,1,2,3,4],[4,3,2,1,0]]
x_ax = [0,1,2,3,4]
for y_ax in ys:
ts = Series(y_ax,index=x_ax)
ts.plot(kind='bar', figsize=(15,5))
Je m'attendrais à avoir 2 tracés distincts en sortie, à la place, je fusionne les deux séries en un seul tracé. Pourquoi donc? Comment puis-je obtenir deux tracés distincts en gardant la boucle for
?
Ajoutez simplement l'appel à plt.show()
après avoir tracé le graphique (vous voudrez peut-être import matplotlib.pyplot
pour le faire), comme ceci:
from pandas import *
import matplotlib.pyplot as plt
%matplotlib inline
ys = [[0,1,2,3,4],[4,3,2,1,0]]
x_ax = [0,1,2,3,4]
for y_ax in ys:
ts = Series(y_ax,index=x_ax)
ts.plot(kind='bar', figsize=(15,5))
plt.show()
Dans le bloc-notes IPython, la meilleure façon de procéder est souvent d'utiliser des sous-tracés. Vous créez plusieurs axes sur la même figure, puis rendez la figure dans le bloc-notes. Par exemple:
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
ys = [[0,1,2,3,4],[4,3,2,1,0]]
x_ax = [0,1,2,3,4]
fig, axs = plt.subplots(ncols=2, figsize=(10, 4))
for i, y_ax in enumerate(ys):
pd.Series(y_ax, index=x_ax).plot(kind='bar', ax=axs[i])
axs[i].set_title('Plot number {}'.format(i+1))
génère les graphiques suivants