Given the code snippet below with clf() #1 uncommented works like one would expect - both plots are drawn. If #1 is commented out and #2 is uncommented, then the figure is cleared and neither plot is drawn. Is this the correct behavior? It seems like a bug to me.

M

import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.axes_grid1 import AxesGrid

f = plt.figure(1)

plt.clf() #1

grid = AxesGrid(f, 111, (1,2))

#plt.clf() #2

grid[0].plot(np.arange(10))

grid[1].plot(np.arange(10))

plt.draw()

Hi Mike,

Mike Kaufman, on 2012-01-11 19:30, wrote:

Given the code snippet below with clf() #1 uncommented works like one

would expect - both plots are drawn. If #1 is commented out and #2 is

uncommented, then the figure is cleared and neither plot is drawn. Is

this the correct behavior? It seems like a bug to me.

Seems to me like this is the intended behavior and not a bug. I'm

not sure what you were expecting to happen with that second call

to clf. You're clearing the whole figure, so even though the

axes you have in the grid variable have references to f, f has

disowned them!

In [39]: grid = AxesGrid(f, 111, (1,2))

In [40]: f.axes

Out[40]:

[<mpl_toolkits.axes_grid1.axes_divider.LocatableAxes at 0xb7c002c>,

<mpl_toolkits.axes_grid1.axes_divider.LocatableAxes at 0xb8948cc>,

<mpl_toolkits.axes_grid1.axes_grid.CbarAxes at 0xb810dac>,

<mpl_toolkits.axes_grid1.axes_grid.CbarAxes at 0xb97486c>]

In [41]: plt.clf()

In [42]: f.axes

Out[42]: []

Perhaps you wanted to simply to clear the individual axes? You

can do that with [g.cla() for g in grid] instead of your call to

plt.clf()

best,

## ···

--

Paul Ivanov

314 address only used for lists, off-list direct email at:

http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7

Ok, this was my bad. I was under the [mistaken] impression (and in retrospect I'm not sure why) that the AxesGrid call just set up the geometry and the plot calls actually created the axes.

Thanks for setting me straight.

M

## ···

On 1/11/12 9:05 PM, Paul Ivanov wrote:

Hi Mike,

Mike Kaufman, on 2012-01-11 19:30, wrote:

Given the code snippet below with clf() #1 uncommented works like one

would expect - both plots are drawn. If #1 is commented out and #2 is

uncommented, then the figure is cleared and neither plot is drawn. Is

this the correct behavior? It seems like a bug to me.

Seems to me like this is the intended behavior and not a bug. I'm

not sure what you were expecting to happen with that second call

to clf. You're clearing the whole figure, so even though the

axes you have in the grid variable have references to f, f has

disowned them!

In [39]: grid = AxesGrid(f, 111, (1,2))

In [40]: f.axes

Out[40]:

[<mpl_toolkits.axes_grid1.axes_divider.LocatableAxes at 0xb7c002c>,

<mpl_toolkits.axes_grid1.axes_divider.LocatableAxes at 0xb8948cc>,

<mpl_toolkits.axes_grid1.axes_grid.CbarAxes at 0xb810dac>,

<mpl_toolkits.axes_grid1.axes_grid.CbarAxes at 0xb97486c>]

In [41]: plt.clf()

In [42]: f.axes

Out[42]: []

Perhaps you wanted to simply to clear the individual axes? You

can do that with [g.cla() for g in grid] instead of your call to

plt.clf()

best,