# [SciPy-User] matplotlib woes

Tony S Yu tsyu80@gmail....
Tue Jun 8 13:48:28 CDT 2010

```On May 28, 2010, at 9:29 AM, Thøger Emil Juul Thorsen wrote:

> Hello SciPy list;
>
> For my thesis I have an image which is also a spectrum of an object. I
> want to plot the image using imshow along with a data plot of the
> intensity, as can be seen on http://yfrog.com/0tforscipylistp .
>
> My questions are 2:
>
> 1) imshow() sets the ticks on the two upper subplots as pixels
> coordinates. What I want to show as tick labels on my x-axis is the
> wavelength coordinates of the lower plot on the upper images (since
> there is a straightforward pixel-to-wavelength conversion). I have
> googled everywhere but can't seem to find a solution, is it possible?
>
> 2) Is there any possible way to make the subplots layout look a bit
> nicer? Ideally to squeeze the two upper plots closer together and
> stretch the lower plot vertically, or at least to make the two upper
> subplots take up an equal amount of space?
>
> Best regards;
>
> Emil, python-newb and (former) IDL-user,
> Master student of Astrophysics at the University of Copenhagen,
> Niels Bohr Instutute.

Hey Emil,

1) You should try the `extent` argument in `imshow`. From the docs for imshow:

*extent*: [ None | scalars (left, right, bottom, top) ]
Data limits for the axes.  The default assigns zero-based row,
column indices to the *x*, *y* centers of the pixels.

For example:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(0, 2*np.pi)
>>> Y = np.sin([x, x])
>>> plt.imshow(Y, extent=[0, 2*np.pi, 0, 1])

2) If you're plotting interactively, you can configure the subplots using the command on the toolbar (3rd from right). If you want to add the adjustment to your script use `subplots_adjust`. For example,