From: Chris B. <Chr...@no...> - 2005-02-01 22:20:29
|
John Hunter wrote: > Chris> How do I save an AGG figure with the OO interface? > The distinction between the figure and > the canvas was made to fully separate the front end from the backend. Which is a good idea. > here the pure OO way: > from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas > from matplotlib.figure import Figure > > fig = Figure() > canvas = FigureCanvas(fig) So this is really the only extra call. not bad. > ax = fig.add_subplot(111) > ax.plot([1,2,3]) > ax.set_title('hi mom') > ax.grid(True) > ax.set_xlabel('time') > ax.set_ylabel('volts') > canvas.print_figure('test') > Hmm, I don't see the logic of being willing to use some pylab commands > (pylab.figure) but not others (pylab.savefig). Well, the figure constructor has to be in some namespace. pylab.savefig, however, bothers me for two reasons: 1) It seems to me that it belongs as a figure (or canvas, I suppose) method. 2) Most critically, it uses the "current figure". I can see where this makes sense with Matlab style interactive use, but in a program, I may be building more than one figure at a time, and it makes more sense to me to do something like: fig1.save("plot1") fig2.save("plot2") than: set_current_figure(1) pylab.savefig("plot1") set_current_figure(2) pylab.savefig("plot2") > But, if you really > hate savefig, you can call print_figure by getting your hands on the > current canvas > manager = pylab.get_current_fig_manager() Ah, the "current" concept again! > As we discussed earlier, it might be useful for the figure to store a > ref to it's canvas, then we could define fig.savefig which forwards > the call to canvas.print_figure. Would make for a cleaner interface > for folks who love '.' Yes, I confess, I love ".". That does sound like a good idea to me. Sorry to come off as being critical. I am very impressed with your work on matplotlib. There are been many promising starts to a python plotting package, and NONE of them have come even close to what you've done with matplotlib. That's why I'm using it. I also was a big fan and user of Matlab for years, I never would have gotten my dissertation done without it. However, I like Python as a language far more than Matlab, and with SciPy and matplotlib, we're getting close to having Matlab's wealth of functionality in Python. My ideal is that I have a plotting package that really feels Pythonesque. Matplotlib is actually pretty close. I think adding a few things, and making more docs and examples, and we'll have just what I've been wanting. I hope as I get more familiar with matplotlib, I'll start to contribute code, rather than just questions and criticism. John, do you want patches that add-to/improve the OO interface? -Chris -- Christopher Barker, Ph.D. Oceanographer NOAA/OR&R/HAZMAT (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception Chr...@no... |