[Matplotlib-users] Axes array for subplots

Virgil Stokes vs at it.uu.se
Tue Apr 17 11:14:28 EDT 2018


Ok Ben,

I tried the following per your suggestion:

fig, axarr = plt.subplots(NSub, figsize=(width,height), squeeze=False, 
sharex=True)

but when the following is executed:

   ax.grid(True)

I get the following error message:
   builtins.AttributeError: 'numpy.ndarray' object has no attribute 'grid'

But, thanks for your help :-).


On 2018-04-17 16:30, Benjamin Root wrote:
> By default, `squeeze` is called on the array prior to returning it. 
> This way, users don't need to deal with 2D arrays when most of the 
> time, they are dealing with 1D setups. You can specify squeeze=False 
> to subplots to turn this behavior off and always have a 2D array.
>
> I hope that helps!
> Ben Root
>
>
> On Tue, Apr 17, 2018 at 10:12 AM, Virgil Stokes <vs at it.uu.se 
> <mailto:vs at it.uu.se>> wrote:
>
>     The following line is part of a much larger python (3.6) with
>     Matplotlib (2.2.2) program in which the number of subplots is
>     determined from input data:
>
>     fig, axarr = plt.subplots(NSub, figsize=(width,height), sharex=True)
>
>     This works fine when the number of subplots (NSub) is greater than
>     1. For example when NSub=3, axarr is an array of length 3 and
>     contains:
>
>     array([<matplotlib.axes._subplots.AxesSubplot object at
>     0x0000025900E9DDD8>,
>              <matplotlib.axes._subplots.AxesSubplot object at
>     0x00000259011897F0>,
>              <matplotlib.axes._subplots.AxesSubplot object at
>     0x00000259011C7128>],
>             dtype=object)
>
>     However, when NSub=1, axarr contains:
>
>     <matplotlib.axes._subplots.AxesSubplot object at 0x00000161AB26AE80>
>
>     and of course, will give an error if axarr is an array; i.e.
>
>     builtins.TypeError: 'AxesSubplot' object does not support indexing
>
>     For my code this requires special handling because axarr is no
>     longer an array. Why not have axarr contain:
>
>     array([<matplotlib.axes._subplots.AxesSubplot object at
>     0x00000161AB26AE80>],dtype=object)
>
>     when NSub=1. IMHO this is consistent; i.e. it is an array with a
>     length that is equal to the number of subplots.
>
>     _______________________________________________
>     Matplotlib-users mailing list
>     Matplotlib-users at python.org <mailto:Matplotlib-users at python.org>
>     https://mail.python.org/mailman/listinfo/matplotlib-users
>     <https://mail.python.org/mailman/listinfo/matplotlib-users>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20180417/ced451e1/attachment-0001.html>


More information about the Matplotlib-users mailing list