Re: [Matplotlib-users] AxesGrid problem.

2009-12-08 Thread Ryan Neve
Sorry for the delay.
I don't know if I ever included my software versions:
Python  IDLE 2.6.2
matplotlib 0.99.0
numpy 1.4.0rc1 (I was using 1.3.0)
Here is more complete code. This is the only place I use matplotlib for
anything so I don't think any earlier code should affect the plot.
I've included the values of the input variables below and I could include
all the code which gets the data and manipulates it if this would help.

def plotGrid(x_dim,y_dim,z_dim,long_name,units,contours=16):

This will create a frame for all the sub plots. There will be one row
(subplot) per parameter. There will be one column.
All plots will share their x scale (time)
Each row will have its own y scale and legend

from matplotlib import pyplot
from mpl_toolkits.axes_grid import AxesGrid
from numpy import meshgrid, transpose
nrows = len(z_dim) # Number of rows
print('there are',nrows,'rows') # Confirm that the number of rows is as
expected.
fig_h_size = 20. # figure width in inches
fig_v_size = 8. # figure height in inches
dev_mult = 3 # How many standard deviations to mask out.
x_grid,y_grid = meshgrid(x_dim,y_dim)
x_grid = transpose(x_grid)
y_grid = transpose(y_grid)

# Start the plotting routines
DAP_figure = pyplot.figure(1,(fig_h_size,fig_v_size))
pyplot.title('Title goes here')
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 DAP_figure
nrows_ncols = (nrows,1),
axes_pad = 0.0, # pad between axes in inches
aspect=False, # By default (False), widths and heigths
of axes in the grid are scaled independently. If True, they are scaled
according to their data limits
add_all=True, # Add axes to figures if True (default
True)
share_all=True, # xaxis  yaxis of all axes are shared
if True (default False)
label_mode = L, # location of tick labels thaw will be
displayed. 1 (only the lower left axes), L (left most and bottom most
axes), or all
cbar_location=right, # right or top
cbar_mode=each, # None,single, or each
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 each grid
ax = my_grid[i].pcolor(x_grid,y_grid,z_dim[parameter])
print('from',x_grid[0][0],'to',x_grid[-1][0])
my_grid[i].set_ylabel(long_name[parameter]) # Puts a y label on
every graph. Eventually we want this labeled only once.
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])

# Now show it
pyplot.draw()
pyplot.show()
return x_grid, y_grid, my_grid #Useful only for debugging. There is no
code after this.

Here are some typical values for the inpit variables if it helps,

x_dim, time in epoch seconds, is:
array([125325, 1253251800, 1253253600, 1253255400, 1253257200,
   1253259000, 1253260800, 1253262600, 1253264400, 1253266200,
   1253268000, 1253269800, 1253271600, 1253273400, 1253275200,
   1253277000, 1253278800, 1253280600, 1253282400, 1253284200,
   1253286000, 1253287800, 1253289600, 1253291400, 1253293200,
   1253295000, 1253296800, 1253298600, 1253300400, 1253302200,
   1253304000, 1253305800, 1253307600, 1253309400, 1253311200,
   1253313000, 1253314800, 1253316600, 1253318400, 1253320200,
   1253322000, 1253323800, 1253325600, 1253327400, 1253329200,
   1253331000, 1253332800])
y_dim, water depths in meters, is:
array([ 0. , -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9, -1. ,
   -1.1, -1.2, -1.3, -1.4, -1.5, -1.6, -1.7, -1.8, -1.9, -2. , -2.1,
   -2.2, -2.3, -2.4, -2.5, -2.6, -2.7])
in the example plot below z_dim is a dictionary with three arrays,
'do','chl','turb'.
as an example, z_dim['chl'] (chlorophyl) is a 2D array of the form:
masked_array(data =
 [[-- 14.842718 14.842718 ..., 13.123892 -- --]
 [-- 15.0 15.0 ..., -- -- --]
 [-- 13.1241378212 13.1241378212 ..., -- -- --]
 ...,
 [-- 12.081481385 12.081481385 ..., 10.3037038589 -- --]
 [-- 11.0882356451 11.0882356451 ..., 9.95714437393 -- --]
 [-- 13.4448273754 13.4448273754 ..., -- -- --]],
 mask =
 [[ True False False ..., False  True  True]
 [ True False False ...,  True  True  True]
 [ True False False ...,  True  True  True]
 ...,
 [ True False False ..., False  True  True]
 [ True False False ..., False  True  True]
 [ True False False ...,  True  True  True]],
   fill_value = 1e+20)

Here's the plot as it stands now:
[image: fgpXr.png]

Thank you again for your time.

On Fri, Dec 4, 2009 at 4:07 PM, Jae-Joon Lee 

Re: [Matplotlib-users] AxesGrid problem.

2009-12-08 Thread Jae-Joon Lee
Did you test the code in my previous post?

If you want to get some help, you need to take your time to create a simple
and complete example (which reproduces the problem) that others can easily
test.

Since I believe the problem is due to the existence of an extra axes, your
example don't need to show any images. Please post a simple script that
draws a blank AxesGrid and shows extra ticklabels as your current code does.

Regards,

-JJ


On Tue, Dec 8, 2009 at 3:10 PM, Ryan Neve ryan.n...@gmail.com wrote:

 Sorry for the delay.
 I don't know if I ever included my software versions:
 Python  IDLE 2.6.2
 matplotlib 0.99.0
 numpy 1.4.0rc1 (I was using 1.3.0)
 Here is more complete code. This is the only place I use matplotlib for
 anything so I don't think any earlier code should affect the plot.
 I've included the values of the input variables below and I could include
 all the code which gets the data and manipulates it if this would help.

 def plotGrid(x_dim,y_dim,z_dim,long_name,units,contours=16):
 
 This will create a frame for all the sub plots. There will be one row
 (subplot) per parameter. There will be one column.
 All plots will share their x scale (time)
 Each row will have its own y scale and legend

 
 from matplotlib import pyplot
 from mpl_toolkits.axes_grid import AxesGrid
 from numpy import meshgrid, transpose

 nrows = len(z_dim) # Number of rows
 print('there are',nrows,'rows') # Confirm that the number of rows is
 as expected.
 fig_h_size = 20. # figure width in inches
 fig_v_size = 8. # figure height in inches
 dev_mult = 3 # How many standard deviations to mask out.
 x_grid,y_grid = meshgrid(x_dim,y_dim)
 x_grid = transpose(x_grid)
 y_grid = transpose(y_grid)

 # Start the plotting routines
 DAP_figure = pyplot.figure(1,(fig_h_size,fig_v_size))
 pyplot.title('Title goes here')

 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 DAP_figure
 nrows_ncols = (nrows,1),

 axes_pad = 0.0, # pad between axes in inches
 aspect=False, # By default (False), widths and heigths
 of axes in the grid are scaled independently. If True, they are scaled
 according to their data limits
 add_all=True, # Add axes to figures if True (default
 True)
 share_all=True, # xaxis  yaxis of all axes are shared
 if True (default False)
 label_mode = L, # location of tick labels thaw will
 be displayed. 1 (only the lower left axes), L (left most and bottom most
 axes), or all
 cbar_location=right, # right or top
 cbar_mode=each, # None,single, or each

 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 each grid

 ax = my_grid[i].pcolor(x_grid,y_grid,z_dim[parameter])
 print('from',x_grid[0][0],'to',x_grid[-1][0])
 my_grid[i].set_ylabel(long_name[parameter]) # Puts a y label on
 every graph. Eventually we want this labeled only once.

 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])

 # Now show it
 pyplot.draw()
 pyplot.show()
 return x_grid, y_grid, my_grid #Useful only for debugging. There is no
 code after this.

 Here are some typical values for the inpit variables if it helps,

 x_dim, time in epoch seconds, is:
 array([125325, 1253251800, 1253253600, 1253255400, 1253257200,
1253259000, 1253260800, 1253262600, 1253264400, 1253266200,
1253268000, 1253269800, 1253271600, 1253273400, 1253275200,
1253277000, 1253278800, 1253280600, 1253282400, 1253284200,
1253286000, 1253287800, 1253289600, 1253291400, 1253293200,
1253295000, 1253296800, 1253298600, 1253300400, 1253302200,
1253304000, 1253305800, 1253307600, 1253309400, 1253311200,
1253313000, 1253314800, 1253316600, 1253318400, 1253320200,
1253322000, 1253323800, 1253325600, 1253327400, 1253329200,
1253331000, 1253332800])
 y_dim, water depths in meters, is:
 array([ 0. , -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9, -1. ,
-1.1, -1.2, -1.3, -1.4, -1.5, -1.6, -1.7, -1.8, -1.9, -2. , -2.1,
-2.2, -2.3, -2.4, -2.5, -2.6, -2.7])
 in the example plot below z_dim is a dictionary with three arrays,
 'do','chl','turb'.
 as an example, z_dim['chl'] (chlorophyl) is a 2D array of the form:
 masked_array(data =
  [[-- 14.842718 14.842718 ..., 13.123892 -- --]
  [-- 15.0 15.0 ..., -- -- --]
  [-- 13.1241378212 13.1241378212 ..., -- -- --]
  ...,
  [-- 

Re: [Matplotlib-users] AxesGrid problem.

2009-12-04 Thread Ryan Neve
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_cbarhttp://matplotlib.sourceforge.net/examples/axes_grid/demo_axes_grid.htmlexample,
  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 

Re: [Matplotlib-users] AxesGrid problem.

2009-12-04 Thread Jae-Joon Lee
On Fri, Dec 4, 2009 at 2:49 PM, Ryan Neve ryan.n...@gmail.com wrote:

 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).

 **

Thanks a lot.
This need to be fixed.



 *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.



Please, more complete example does not make any difference unless it is
complete.

Try the following code. This is based on the first part of your example. It
will show empty axes but without extra ticklabels. Again, I think an extra
axes is added to the figure somewhere in your code. And, without a complete,
runnable (but simple) code, there is not much I (or others) can help.

-JJ


from matplotlib import pyplot
from mpl_toolkits.axes_grid import AxesGrid

nrows = 3
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%,
)

pyplot.draw()
pyplot.show()
--
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


Re: [Matplotlib-users] AxesGrid problem.

2009-12-03 Thread Ryan Neve
Thank You,
I think I have a better understanding. In my figure, there are six axes,
three for the plots: grid[i] and three for their colorbars:
grid.cbar_axes[i].
I changed my code as you suggested and got something like:
[image: UKM0g.png]
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:
[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:
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?
[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_cbarhttp://matplotlib.sourceforge.net/examples/axes_grid/demo_axes_grid.htmlexample,
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?)?

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


Re: [Matplotlib-users] AxesGrid problem.

2009-12-03 Thread Jae-Joon Lee
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_cbarhttp://matplotlib.sourceforge.net/examples/axes_grid/demo_axes_grid.htmlexample,
  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.comwrote:

 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 

[Matplotlib-users] AxesGrid problem.

2009-12-02 Thread Ryan Neve
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


Re: [Matplotlib-users] AxesGrid problem.

2009-12-02 Thread Jae-Joon Lee
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