Variable wspace and/or hspace?

Hello all,

I want to adjust the wspace used in a gridspec plot on a cell by cell basis. Anyone have suggestions for how to do that? I haven't been able to find an api to do that directly. The other possibility would be to be able to embed a gridspec within a gridspec, but I'm not sure if that's possible, either.

More details: I have a plot that has two subplots arranged in a single row or column. Both plots share their relevant border axis, so I don't want space between them. They also share a color bar, however, and the only way I've been able to get that to draw in a sane way was to give it it's own axes instance in a separate cell of the gridspec. I therefore want to remove the space between the main plots without removing it for the color bar. This worked fine for the wider than tall plots since I could stack them and set hspace to 0 and have the color bar extend across rows. For the pair of plots that are more square, and therefor best put side by side, I'm having trouble finding a solution.

Thanks,
Sean

I wonder if hspace and wspace in gridspec should take arrays like width_ratios and height_ratios. Try axes_grid1 instead.
http://matplotlib.org/mpl_toolkits/axes_grid/users/overview.html#axes-grid1
(though the documentation is not the best)

I think this example does what you want:

M

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np

clf()
ax = plt.subplot(111)
im = ax.imshow(np.arange(100).reshape((10,10)))

divider = make_axes_locatable(ax)
ax1 = divider.append_axes("right", size="100%", pad=0.0)

im1 = ax1.imshow(np.arange(100).reshape((10,10)).transpose())
cax = divider.append_axes("right", size="5%", pad=0.05)

plt.colorbar(im1, cax=cax)
plt.draw()

···

On 9/18/12 6:14 PM, Sean Lake wrote:

Hello all,

I want to adjust the wspace used in a gridspec plot on a cell by cell
basis. Anyone have suggestions for how to do that? I haven't been
able to find an api to do that directly. The other possibility would
be to be able to embed a gridspec within a gridspec, but I'm not sure
if that's possible, either.

More details: I have a plot that has two subplots arranged in a
single row or column. Both plots share their relevant border axis, so
I don't want space between them. They also share a color bar,
however, and the only way I've been able to get that to draw in a
sane way was to give it it's own axes instance in a separate cell of
the gridspec. I therefore want to remove the space between the main
plots without removing it for the color bar. This worked fine for the
wider than tall plots since I could stack them and set hspace to 0
and have the color bar extend across rows. For the pair of plots that
are more square, and therefor best put side by side, I'm having
trouble finding a solution.

Sean,

I *think* the best way to do this is use multiple GridSpec objects
within a single figure. Does this example help?
http://matplotlib.org/users/gridspec.html#adjust-gridspec-layout

-paul

···

On Tue, Sep 18, 2012 at 3:14 PM, Sean Lake <odysseus9672@...287...> wrote:

Hello all,

I want to adjust the wspace used in a gridspec plot on a cell by cell basis. Anyone have suggestions for how to do that? I haven't been able to find an api to do that directly. The other possibility would be to be able to embed a gridspec within a gridspec, but I'm not sure if that's possible, either.

More details: I have a plot that has two subplots arranged in a single row or column. Both plots share their relevant border axis, so I don't want space between them. They also share a color bar, however, and the only way I've been able to get that to draw in a sane way was to give it it's own axes instance in a separate cell of the gridspec. I therefore want to remove the space between the main plots without removing it for the color bar. This worked fine for the wider than tall plots since I could stack them and set hspace to 0 and have the color bar extend across rows. For the pair of plots that are more square, and therefor best put side by side, I'm having trouble finding a solution.

Thanks,
Sean