Jas*_*son 0 python plot matplotlib
我不确定这是否是源代码的一个小错误,但子图不会分散绘制两个形状为 (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
Run Code Online (Sandbox Code Playgroud)
关于这个问题的任何想法将不胜感激!
如果您指定一行三列,则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,)
Run Code Online (Sandbox Code Playgroud)
plt.subplots
始终返回二维数组的最佳方法是设置squeeze=False
:
In [8]: fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(12,5), squeeze=False)
In [9]: axes.shape
Out[9]: (1,3)
Run Code Online (Sandbox Code Playgroud)
或者(如果您已经有axes
一维数组),您可以使用:
axes = np.atleast_2d(axes)
Run Code Online (Sandbox Code Playgroud)
例如,
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>
Run Code Online (Sandbox Code Playgroud)