[Matplotlib-users] Axes array for subplots

Slavin, Jonathan jslavin at cfa.harvard.edu
Tue Apr 17 11:33:36 EDT 2018


​Virgil,

What is ax in your example?  When I do
fig,axarr = plt.subplots(1,squeeze=False,sharex=True)
I get axarr is an array of shape (1,1).  An array does not have an
attribute grid.

Jon
​


>
> Date: Tue, 17 Apr 2018 17:14:28 +0200
> From: Virgil Stokes <vs at it.uu.se>
> To: Benjamin Root <ben.v.root at gmail.com>,
>         <matplotlib-users at python.org>
> Subject: Re: [Matplotlib-users] Axes array for subplots
> Message-ID: <951bcfd1-e953-17e3-9350-caec6231ab00 at it.uu.se>
> Content-Type: text/plain; charset="utf-8"; Format="flowed"
>
> 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.html>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users at python.org
> https://mail.python.org/mailman/listinfo/matplotlib-users
>
>
> ------------------------------
>
> End of Matplotlib-users Digest, Vol 33, Issue 10
> ************************************************
>



-- 
________________________________________________________
Jonathan D. Slavin                 Harvard-Smithsonian CfA
jslavin at cfa.harvard.edu       60 Garden Street, MS 83
phone: (617) 496-7981       Cambridge, MA 02138-1516
cell: (781) 363-0035             USA
________________________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20180417/335d186b/attachment-0001.html>


More information about the Matplotlib-users mailing list