is there any alternative to savefig?

kiwanuka robert.kiwanuka at gmail.com
Thu Jan 28 07:29:01 EST 2010


Hi all,

I wonder if anyone knows any alternative function in pylab (or
otherwise) that could be used to save an image. My problem is as
follows:

---------------
from pylab import *
...

figure(1)
fig1 = gca()
figure(2)
fig2 = gca()
figure(3)
fig3 = gca()

for i,data_file in enumerate(data_file_list):
   time,x, y,x2, y2 = read_csv_file_4(open
(data_file),elements=num_of_elements)
   fig1.plot(-x,-y,color=colours[i],label=labellist[i])
   fig2.plot(time,-y,color=colours[i],label=labellist[i])
   fig3.plot(time,-x,color=colours[i],label=labellist[i])

fig1.legend(loc='best')
fig1.set_title("y1 - x1")
fig1.set_ylabel("y1")
fig1.set_xlabel("x1")
#savefig("y1-x1.png")

fig2.legend(loc='best')
fig2.set_title("y1 - time")
fig2.set_ylabel("y1")
fig2.set_xlabel("time[s]")
#savefig("y1-time.png")

fig3.legend(loc='best')
fig3.set_title("x1 - time")
fig3.set_ylabel("x1")
fig3.set_xlabel("time[s]")
#savefig("x1-time.png")
show()
---------------------------

In the above code, I read multiple data files and plot three separate
figures. Now I would like to save each of the figures to a file as the
commented savefig satements suggest. The trouble is that if I
uncomment all those savefig statements, I get three saved images all
containing the plot belonging to figure(3), which was the last figure
declared.

I understand this to be happening because savefig will save the
"current" figure, which in this case happens to be the last one
declared.

If I could do something like fig1.savefig("y1-x1.png") or savefig("y1-
x1.png").fig1, this would solve the problem but I'm not aware of any
such methods  or modules to enable this. This is thus a flaw in the
general design/implementation of the savefig function, but is there an
alternative function to enable me achieve what I need? Is there
perhaps a possible tweak to savefig to make it do the same?

Thanks in advance,

Robert



More information about the Python-list mailing list