ValueError:num必须为1 <= num <= 2,而不是3

Pat*_*bug 10 python boxplot pandas

我有以下dataframe生成使用pivot_table:

在此输入图像描述

boxplot在多列中使用以下代码:

    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()
Run Code Online (Sandbox Code Playgroud)

我期待如下输出:

在此输入图像描述

但是这段代码给了我以下错误:

---------------------------------------------------------------------------
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
Run Code Online (Sandbox Code Playgroud)

我相信这是因为一张图上只能有2个箱图?

有关如何解决此问题的任何想法?任何指针都将受到高度赞赏.

TIA.

MSe*_*ert 22

请注意,您只生成两个子图:

ax = plt.subplot(1,2,i+1)
Run Code Online (Sandbox Code Playgroud)

第一个参数是每行中的绘图数量,第二个参数是每列的绘图数量(另请参阅matplotlib.pyplot.subplot文档).因此,您的案例中可用的总数是:1*2 = 2.如果你想创建25,你可以使用例如:

ax = plt.subplot(5,5,i+1)
Run Code Online (Sandbox Code Playgroud)

每行5个图,每列5个加上总数 5*5 = 25

  • 非常感谢.从我的角度来看,这非常愚蠢.自我注意:在互联网上复制粘贴代码之前正确理解参数. (3认同)