J'ai le dataframe
suivant que j'ai généré à l'aide de pivot_table
:
et j'utilise le code suivant pour boxplot
les multiples colonnes:
fig = plt.figure()
for i in range(0,25):
ax = plt.subplot(1,2,i+1)
toPlot1.boxplot(column='Score',by=toPlot1.columns[i+1],ax=ax)
fig.suptitle('test title', fontsize=20)
plt.show()
Je m'attendais à une sortie comme celle-ci:
Mais ce code me donne l'erreur suivante:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-275-9c68ce91596f> in <module>()
1 fig = plt.figure()
2 for i in range(0,25):
----> 3 ax = plt.subplot(1,2,i+1)
4 toPlot1.boxplot(column='Score',by=toPlot1.columns[i+1],ax=ax)
5 fig.suptitle('test title', fontsize=20)
E:\Anaconda2\lib\site-packages\matplotlib\pyplot.pyc in subplot(*args, **kwargs)
1020
1021 fig = gcf()
-> 1022 a = fig.add_subplot(*args, **kwargs)
1023 bbox = a.bbox
1024 byebye = []
E:\Anaconda2\lib\site-packages\matplotlib\figure.pyc in add_subplot(self, *args, **kwargs)
1003 self._axstack.remove(ax)
1004
-> 1005 a = subplot_class_factory(projection_class)(self, *args, **kwargs)
1006
1007 self._axstack.add(key, a)
E:\Anaconda2\lib\site-packages\matplotlib\axes\_subplots.pyc in __init__(self, fig, *args, **kwargs)
62 raise ValueError(
63 "num must be 1 <= num <= {maxn}, not {num}".format(
---> 64 maxn=rows*cols, num=num))
65 self._subplotspec = GridSpec(rows, cols)[int(num) - 1]
66 # num - 1 for converting from MATLAB to python indexing
ValueError: num must be 1 <= num <= 2, not 3
Je crois que c'est parce qu'il ne peut y avoir que 2 boîtes à moustaches sur un graphique?
Une idée pour réparer ceci? Tout pointeur serait très apprécié.
TIA.
Notez que vous ne générez que deux sous-tracés:
ax = plt.subplot(1,2,i+1)
Le premier argument est le nombre de tracés dans chaque ligne et le second le nombre de tracés par colonne (voir aussi la documentation matplotlib.pyplot.subplot ). Le nombre total de parcelles disponibles dans votre cas est donc: 1*2 = 2
. Si vous souhaitez en créer 25, vous pouvez par exemple utiliser:
ax = plt.subplot(5,5,i+1)
5 parcelles par ligne et 5 par colonne s'ajoutent à un nombre total de 5*5 = 25