Than you for your assistance with AxesGrid.

Concerning the documentation, on this page:
http://matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/overview.htmit
says:
   Name Default Description  aspect True aspect of axes
then a few lines below:
"*aspect*By default (False), widths and heigths of axes in the grid are
scaled independently. If True, they are scaled according to their data
limits (similar to aspect parameter in mpl)."

*Here is a more complete example of my code:
*In the following code, x_grid and y_grid are are arrays created by meshgrid
and represent time and water depth respectively.
z_dim is a dictionary of one or more arrays of sensor readings corresponding
to the depths and times in x_grid and y_grid.


from matplotlib import pyplot
from mpl_toolkits.axes_grid import AxesGrid
nrows = len(z_dim) # Number of rows
DAP_figure = pyplot.figure(1,(20,8))
pyplot.figtext(0.05,.5,"Depth
(m)",rotation='vertical',verticalalignment='center')
# Create a grid of axes with the AxesGrid helper class
my_grid = AxesGrid(DAP_figure, 111, # Only one grid in this figure
                nrows_ncols = (nrows,1), # one or more rows, but only one
column
                axes_pad = 0.0, #pad between axes in inches
                aspect=False, # If True, all plots are superimposed upon one
another.
                add_all=True, # not sure why this would ever be False
                share_all=True, # I think this means that all axes have the
same x & y scales
                label_mode = "L", # labels for depth on left and time on
bottom
                cbar_location="right",
                cbar_mode="each", # each axes has a different scale
                cbar_size="2%",
                cbar_pad="1%",
                )

for i,parameter in enumerate(z_dim):
    z_dim[parameter] = maskDAP(z_dim[parameter],parameter,dev_mult) #Need to
mask NaNs and outliers for each grid
    ax = my_grid[i].pcolor(x_grid,y_grid,z_dim[parameter])
    my_grid[i].set_ylabel(long_name[parameter]) # Puts a y label on every
graph.
    my_grid.cbar_axes[i].colorbar(ax)
    my_grid.cbar_axes[i].axis["right"].toggle(ticklabels=True,label=True)
    my_grid.cbar_axes[i].set_ylabel(units[parameter]) #Puts the units on the
right side of the colorbar
pyplot.draw()
pyplot.show()

I do need a separate colorbar for each plot as they are results of different
sensors all taken at the same time and depth scales.
Here is what I have now:
[image: wutSM.png]
Which, aside from the extra scale labels on the x and y axis is getting
close.

Thank You for your help,

-Ryan


*matplotlib version:*

On Thu, Dec 3, 2009 at 4:36 PM, Jae-Joon Lee <lee.j.j...@gmail.com> wrote:

>
>
> On Thu, Dec 3, 2009 at 3:40 PM, Ryan Neve <ryan.n...@gmail.com> wrote:
>
>>
>> I tried all sorts of things, but finally, by setting aspect=False I got
>> it to work. In the documentation, the table says this defaults to True and
>> the explanation of aspect below says it defaults to False. Although I don't
>> entirely understand what is going on, I think this threw me off.
>> So then I had this:
>>
>
> Can you be more specific about which documentation says the default aspect
> is False? This may need to be fixed. Note that AxesGrid is designed
> for displaying images with aspect=True. Otherwise, you may better stick to
> the subplot..
>
>
>
>
>> [image: 84Kna.png]
>> ... which looks much better, except that there are two sets of x and y
>> axis labels? This seems to have something to do with the colorbar. I've got:
>>
>>
> To me, there is another axes underneath the AxesGrid. It is hard to tell
> without a complete code.
>
>
>
>>                     label_mode = "L",
>>                     cbar_location="right",
>>                     cbar_mode="each",
>>                     cbar_size="2%",
>>                     cbar_pad="0.5%"
>>
>> Now I'm trying to get scales and labels on my colorbars.
>> I tried:
>> for i,parameter in enumerate(z_dim):
>>     ax = my_grid[i].pcolor(x_grid,y_grid,z_dim[parameter]) # This is the
>> pcolor plot
>>     my_grid[i].set_ylabel('Depth') # Correctly puts a y label on every
>> plot.
>>     cb = my_grid.cbar_axes[i].colorbar(ax) # Puts in a colorbar for this
>> axes?s
>>     cb.set_ylabel(parameter) #It would be nice if this was on the far
>> right next to the colorbar. I don't see it anywhere. Perhaps underneath
>> something?
>
>
> The label of the colorbar is set to invisible by default (this is a bug).
> So, try something like
>
>     my_grid.cbar_axes[i].set_ylabel(parameter)
>     my_grid.cbar_axes[i].axis["right"].toggle(ticklabels=True,
>                                               label=True)
>
>
>
>
>>
>> [image: DPkWz.png]
>> It looks like perhaps the colorbar axes is inside the ax axes rather than
>> besides it?
>> In the 
>> demo_grid_with_each_cbar<http://matplotlib.sourceforge.net/examples/axes_grid/demo_axes_grid.html>example,
>>  how would you put a scale and label on the colorbar like in this
>> plot:?
>> [image: 58dFK.png]
>> I can put a y_label on each contour plot, but since they all have depth,
>> I'd like to label this only once.
>> Is there a way to label the entire AxesGrid (or is that subplot?)?
>>
>>
> Does label_mode="1" do what you want?
> You may manually make some of the labels invisible.
>
> Please post a "complete", but simple, script that reproduces your problem.
> Otherwise, it is hard to track down what is wrong.
> Also, please report what version of matplotlib you're using. The axes_grid
> toolkit is relatively new and some of the feature may not work in older
> versions.
>
> Regards,
>
>  -JJ
>
>
>
>> Thank you very much for your help,
>>
>> -Ryan
>>
>>
>>
>> On Wed, Dec 2, 2009 at 10:21 PM, Jae-Joon Lee <lee.j.j...@gmail.com>wrote:
>>
>>> This happens because, when the AxesGrid is created, gca() is set to the
>>> last axes, which is the last colobar axes.
>>>
>>> If you use axes_grid toolkit, you'd better not use pyplot command that
>>> works on axes. Instead, use axes method directly.
>>>
>>> For example, instead of  "pyplot.pcolor(..)" , use "ax.pcolor(..)".
>>>
>>> Regards,
>>>
>>> -JJ
>>>
>>>
>>>
>>>
>>> On Wed, Dec 2, 2009 at 2:18 PM, Ryan Neve <ryan.n...@gmail.com> wrote:
>>>
>>>> Hello,
>>>>
>>>> I'm trying to use AxesGrid but I'm running into a problem:
>>>> I can plot a single pcolor plot:
>>>> [image: 58dFK.png]
>>>> But when I try to use AxesGrid, my pcolor plot is ending up where I
>>>> expect my colorbar to be.
>>>> [image: mEbTA.png]
>>>>
>>>> I want to have up to 6 of these plots stacked vertically, sharing a
>>>> common time axis and y (depth) scale.
>>>>
>>>> I'll try to simplify my code to show what I'm doing:
>>>>
>>>> # I have arrays x_grid and y_grid for time and water depth.
>>>> # z_dim is a dictionary of arrays (one for each plot)
>>>> # In the plot above it has two arrays.
>>>> from matplotlib import pyplot
>>>> nrows = len(z_dim) # Number of rows is the number of arrays
>>>> My_figure = pyplot.figure(1,(8,8))
>>>> my_grid = AxesGrid(My_figure, 111, #Is this always 111?
>>>>                 nrows_ncols = (nrows,1), # Always one column
>>>>                 axes_pad = 0.1,
>>>>                 add_all=True,
>>>>                 share_all=True, # They all share the same time and depth
>>>> scales
>>>>                 label_mode = "L",
>>>>                 cbar_location="right",
>>>>                 cbar_mode="each",
>>>>                 cbar_size="7%",
>>>>                 cbar_pad="2%",
>>>>                 )
>>>> for row_no,parameter in enumerate(z_dim):
>>>>     ax = my_grid[row_no]
>>>>     ax = pyplot.pcolor(x_grid,y_grid,z_dim[parameter])
>>>> pyplot.draw()
>>>> pyplot.show()
>>>>
>>>> I eventually want to end up with something like this matlab output
>>>> (which I didn't generate):
>>>> [image: jiIaK.png]
>>>> but without the duplication of x scales.
>>>>
>>>> I'm new to pyplot and even after reading the documentation much of this
>>>> is baffling.
>>>>
>>>> -Ryan
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Join us December 9, 2009 for the Red Hat Virtual Experience,
>>>> a free event focused on virtualization and cloud computing.
>>>> Attend in-depth sessions from your desk. Your couch. Anywhere.
>>>> http://p.sf.net/sfu/redhat-sfdev2dev
>>>> _______________________________________________
>>>> Matplotlib-users mailing list
>>>> Matplotlib-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to