ValueError异常:NUM必须为1 <= NUM <= 2,而不是3
问题描述:
我有产生使用pivot_table
以下dataframe
:ValueError异常:NUM必须为1 <= NUM <= 2,而不是3
和我使用以下代码来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()
我期待像下面的输出:
但这个代码给我下面的错误:
---------------------------------------------------------------------------
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个箱线图?
关于如何解决这个问题的任何想法?任何指针将不胜感激。
TIA。
答
请注意,您只生成两个次要情节:
ax = plt.subplot(1,2,i+1)
第一个参数是每一行地块的数量和每列地块的第二数量(见the matplotlib.pyplot.subplot documentation)。因此,您的案例中可用的地块总数为:1*2 = 2
。如果你想创建25例如,你可以使用:每行
ax = plt.subplot(5,5,i+1)
5地块和5%列添加到5*5 = 25
感谢总数那么多。从我的结局来看,这非常愚蠢。注意自己:在互联网上复制粘贴代码前正确理解参数。 – Patthebug