Matthias,

It's clear to me why apect='equal' doesn't work for you.  That option
means to give the axes equal scaling -- i.e., the ratio of length in
axis units to length in the plot is the same for both axes, so that an
axis that goes from 0 to 1 will be twice as long as one that goes from 0
to 0.5.  What is quite unclear to me is why aspect=2 should give a
result like it does.  You can get the right image, though wrong tick
labeling, if you omit the extent argument to imshow.

Jon

On Thu, 2013-05-16 at 12:43 -0700, Matthias Flor wrote:
> Hi all,
> 
> it seems that I am experiencing the same problem here with imshow (rather
> than scatter) and AxesGrid. But calling imshow with aspect=False does not do
> the trick for me.
> I am trying to have two imshow subplots next to each other and a single
> colorbar at the right. The data underlying the imshow's have different x-
> and y-ranges but I want the x- and y-axis to have an aspect ratio of 1 (i.e.
> each imshow should produce a square). I've tried aspect=False,
> aspect='equal', and explicitely setting aspect=2 which should be the correct
> value. See the three images below the code example.
> 
> I've also tried Grid instead of AxesGrid as suggested but I didn't manage to
> achieve good results with the colorbar in that case.
> 
> I'd appreciate any help,
> 
> Matthias
> 
> 
> 
> Here's a more or less minimal code example:
> #############################################
> import numpy as np
> import numpy.random as npr
> from scipy.interpolate import griddata
> import matplotlib.pyplot as plt
> from mpl_toolkits.axes_grid1 import AxesGrid
> 
> fig = figure(1, figsize=[12,10])
> 
> grid = AxesGrid(fig, 111,
>     nrows_ncols = (1, 2),
>     axes_pad = 0.2,
>     share_all = False,
>     label_mode = 'L',
>     cbar_location = 'right',
>     cbar_mode = 'single',
>     cbar_pad = 0.2
> )
> 
> for i in range(2):  
>     xmin, xmax = 0., 1.
>     ymin, ymax = 0., 0.5
>     zmin, zmax = -1., 1.
>     
>     # generate random data:
>     N = 100
>     X = xmin + (xmax-xmin)*npr.random((N,))          # x_i in [0, 1]
>     Y = ymin + (ymax-ymin)*npr.random((N,))          # y_i in [0, 0.5]
>     Z = zmin + (zmax-zmin)*npr.random((N,))          # z_i in [-1, 1]
>     
>     # generate griddata for imshow plot:
>     numspaces = np.sqrt(N)
>     xi = linspace(xmin, xmax, numspaces)
>     yi = linspace(ymin, ymax, numspaces)
>     zi = griddata((X, Y), Z, (xi[None,:], yi[:,None]), method='nearest')
>     norm = matplotlib.colors.normalize(vmin=zmin, vmax=zmax)
>     
>     ax = grid[i]
>     im = ax.imshow(zi,
>         extent = [xmin,xmax,ymin,ymax],  
>         norm = norm, 
>         vmin = zmin,
>         vmax = zmax, 
>         origin = 'lower', 
>         aspect = 'equal',     # or False, or 'auto', or 2, or ...
>         interpolation = 'nearest')
>     
>     ax.grid(False)
>     ax.set_xlabel('x')
>     ax.set_ylabel('y')
>     
> # add a colorbar:
> cbar = plt.colorbar(im, cax=grid.cbar_axes[0])
> cbar.ax.set_ylabel('color level')
> ############################################
> 
> And here are the three resulting images:
> 
> aspect='equal':
> <http://matplotlib.1069221.n5.nabble.com/file/n41075/equal.png> 
> 
> aspect=False:
> <http://matplotlib.1069221.n5.nabble.com/file/n41075/False.png> 
> 
> aspect=2.:
> <http://matplotlib.1069221.n5.nabble.com/file/n41075/two.png> 
> 
> 
> 
> --
> View this message in context: 
> http://matplotlib.1069221.n5.nabble.com/Squashed-axes-with-AxesGrid-tp40699p41075.html
> Sent from the matplotlib - users mailing list archive at Nabble.com.
> 
> 

-- 
______________________________________________________________
Jonathan D. Slavin              Harvard-Smithsonian CfA
jsla...@cfa.harvard.edu         60 Garden Street, MS 83
phone: (617) 496-7981           Cambridge, MA 02138-1516
 cell: (781) 363-0035           USA
______________________________________________________________


------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to