matplotlib中的子批处理命令中存在索引错误

2024-10-01 07:13:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定这是否是源代码的一个小错误,但子图不会分散两个数组形状(1018,)一块。这两个数组都是OLS回归的结果。在使用指定的子图命令之前,我从来没有遇到过使用变量散点图的问题。下面是我的代码:

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(12,5))

axes[0,0].scatter(Blodgett_wue_obs,Blodgett_wue_results.fittedvalues,color ='blue')
axes[0,0].plot(Blodgett_wue_obs,Blodgett_wue_obs,'r')


File "<ipython-input-311-527571e09d59>", line 1, in <module>
runfile('/Users/JasonDucker/Documents/forJason/Paper_Plots.py', wdir='/Users/JasonDucker/Documents/forJason')

File "/Users/JasonDucker/anaconda/lib/python2.7/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile
execfile(filename, namespace)

File "/Users/JasonDucker/anaconda/lib/python2.7/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 78, in execfile
builtins.execfile(filename, *where)

File "/Users/JasonDucker/Documents/forJason/Paper_Plots.py", line 362, in <module>
axes[0,0].scatter(Blodgett_wue_obs,Blodgett_wue_results.fittedvalues,color ='blue')

IndexError: too many indices for array

如果您对这个问题有任何想法,我们将不胜感激!在


Tags: inpyline数组usersdocumentsfileaxes
1条回答
网友
1楼 · 发布于 2024-10-01 07:13:48

如果指定一行三列,axes的形状是(3,),而不是(1,3),所以要在[0][1][2]处索引图形。在

In [8]: fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(12,5))
In [9]: axes.shape
Out[9]: (3,)

使plt.subplots始终返回二维数组的最佳方法是设置squeeze=False

^{pr2}$

或者(如果已经将axes作为一维数组),则可以使用:

axes = np.atleast_2d(axes)

例如

In [8]: fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(12,5))
In [9]: axes.shape
Out[9]: (3,)
In[10]: axes = np.atleast_2d(axes)
In [11]: axes.shape
Out[11]: (1, 3)

In [12]: axes[0,0]
Out[12]: <matplotlib.axes._subplots.AxesSubplot at 0x1149499d0>

相关问题 更多 >