memory error with matplot

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • lisa.engblom@gmail.com

    #1

    memory error with matplot

    Hi,

    I am using matplotlib with python to generate a bunch of charts. My
    code works fine for a single iteration, which creates and saves 4
    different charts. The trouble is that when I try to run it for the
    entire set (about 200 items) it can run for 12 items at a time. On the
    13th, I get an error from matplotlib that says it can't access data.
    However, if I start the program at the point it failed before it works
    fine and will create the charts for the next 12 before failing. I
    assume that I am not closing the files properly somehow or otherwise
    misallocating memory. I tried just reimporting pylab each iteration,
    but that didn't help. This is the function that creates a chart:

    #create and save the figure
    def CreateFigure(st ate, facility, unit, SO2, increment, year, P99):
    size = len(SO2)

    #Create Plot
    figure(1, figsize=(10,8))
    bar(range(1, size+2), SO2, width=0.1, color='k')
    grid(True)
    xlim(0,size)
    ylim(0, 1.1*SO2[-1])
    ylabel('SO2 [lb/hr]')
    heading = ConstructFigNam e(state, facility, unit, increment, year)
    title(heading)

    #set handles
    xticklines = getp(gca(), 'xticklines')
    xgridlines = getp(gca(), 'xgridlines')
    xticklabels = getp(gca(), 'xticklabels')
    yticklines = getp(gca(), 'yticklines')

    #set properties
    setp(xticklines , visible=False)
    setp(xgridlines , visible=False)
    setp(xticklabel s, visible=False)
    setp(yticklines , visible=False)

    axhspan(P99, P99, lw=3, ec='r', fc='r')
    ax = gca()
    #P99 = str(P99)
    P99 = '%0.1f' % P99
    text(0.01, 0.95, '99th Percentile: '+P99+' lb/hr',
    transform=ax.tr ansAxes)

    figpath = ConstructFigPat h(state, facility, unit, increment, year)
    savefig(figpath )
    close()

    Can you see the problem?

    thanks,
    -Lisa

  • John Hunter

    #2
    Re: memory error with matplot

    >>>>"lisa" == lisa engblom <lisa.engblom@g mail.comwrites:

    lisaHi, I am using matplotlib with python to generate a bunch of
    lisacharts. My code works fine for a single iteration, which
    lisacreates and saves 4 different charts. The trouble is that
    lisawhen I try to run it for the entire set (about 200 items) it
    lisacan run for 12 items at a time. On the 13th, I get an error
    lisafrom matplotlib that says it can't access data. However, if
    lisaI start the program at the point it failed before it works
    lisafine and will create the charts for the next 12 before
    lisafailing. I assume that I am not closing the files properly
    lisasomehow or otherwise misallocating memory. I tried just
    lisareimporting pylab each iteration, but that didn't help.
    lisaThis is the function that creates a chart:

    There are a couple of things to try. First, on a long shot, does it
    help to do

    close(1)

    instead if simply close(). I don't think it will but worth a try.

    Second, I think there is a small leak in the tkcanvas, but not in
    matplotlib proper. Do you need to display the graphs you are
    creating, or do you merely want to save them? If the latter, simply
    use the Agg backend

    import matplotlib
    matplotlib.use( 'Agg')

    *before* you import pylab.

    Finally, if you are still having troubles, post a complete,
    free-standing, script to the matplotlib mailing list and we'll see if
    we can replicate it.

    You may also want to take a look at the FAQ on memory leaks:



    JDH

    Comment

    Working...