ValueError:num必须为1< = num< = 2,而不是3 [英] ValueError: num must be 1 <= num <= 2, not 3

查看:366
本文介绍了ValueError:num必须为1< = num< = 2,而不是3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下使用pivot_table生成的dataframe:

并且我正在使用以下代码boxplot多列:

and I'm using the following code to boxplot the 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()

我期望输出如下:

但是此代码给我以下错误:

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

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

I believe it's because there can only be 2 boxplots on one graph?

关于如何解决此问题的任何想法?任何指针将不胜感激.

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

TIA.

推荐答案

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

Note that you only generate two subplots:

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

第一个参数是每行中的打印数量,第二个参数是每列中的打印数量(另请参见

The first argument is the number of plots in each row and the second the number of plots per column (see also the matplotlib.pyplot.subplot documentation). So the total number of plots avaiable in your case is: 1*2 = 2. If you want to create 25 you could for example use:

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

每行5个图和每列5个图总计为5*5 = 25

5 plots per row and 5 per column add to a total number of 5*5 = 25

这篇关于ValueError:num必须为1&lt; = num&lt; = 2,而不是3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆