ValueError: num should be 1 <= num <= 2, not 3

I have the following dataframe that I generated using pivot_table :

enter image description here

and I use the following code for boxplot multiple columns:

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

I was expecting an output like this:

enter image description here

But this code gives me the following error:

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

I believe, because on one chart there can be only 2 boxes.

Any idea on how to fix this? Any pointers would be much appreciated.

TIA.

+5
source share
1 answer

Please note that you only generate two subheadings:

 ax = plt.subplot(1,2,i+1) 

The first argument is the number of graphs in each row, and the second is the number of graphs in the column (see also matplotlib.pyplot.subplot ). Thus, the total number of graphs available in your case: 1*2 = 2 . If you want to create 25, you can, for example, use:

 ax = plt.subplot(5,5,i+1) 

5 graphs per row and 5 per column add to the total 5*5 = 25

+10
source

All Articles