From: matthew a. <ma...@ca...> - 2004-01-05 04:45:23
|
Well I just answered my own question. As the docs point out, you can use the -dPS option to turn on the postscript backend. So to use this in harmony with my scripts I needed to: a) break out the plotting into a separate application called using command line options (conveniently I had already done this) b) tell my option parser about the -d option: import matplotlib from matplotlib.matlab import * # ... def main(): # ... parser.add_option("-d", dest="plotbackend", default="GTK", choices=matplotlib._knownBackends.keys(), help="Graphics backend to use to generate plots.") # ... c) use options.plotbackend in my own code to tell whether to savefig('something.ps') It's a bit awkward, but workable. Cheers, Matthew. On Mon, 5 Jan 2004, matthew arnison wrote: > Hi > > I'm writing a small script to plot my data, and I'd like to use a command > line option to allow the same plot to be either displayed with GTK or > output to postscript. > > This means I have to switch matplotlib backends within the script. > > Now by the time I know what option the user has chosen, I'm in a function: > > def plotThings(options): > matplotlib.use(options.plotbackend) > from matplotlib.matlab import * > > plot(...) > ... > > and python complains > > SyntaxWarning: import * only allowed at module level > > It still works, but I think I'm on thin ice. And it doesn't work if I do: > > def main(): > # ... parse options ... > > matplotlib.use(options.plotbackend) > from matplotlib.matlab import * > > plotThings(options) > > SyntaxWarning: import * only allowed at module level > NameError: global name 'plot' is not defined > > The matplotlib docs say you need to specify the backend before importing > matplotlib.matlab. But this seems a bit restrictive: what if I want to > display a plot on screen, and then output the same plot to postscript and > print it? Normally imports are done only once at the top of a file, but > I'd like to be able to switch backends anywhere. > > What are your thoughts on this issue? > > I've been using matplotlib for a while. It's the best python plotting tool > I reckon. Thanks for contributing to free software. > > Cheers and thanks, > Matthew. > > > ------------------------------------------------------- > This SF.net email is sponsored by: IBM Linux Tutorials. > Become an expert in LINUX or just sharpen your skills. Sign up for IBM's > Free Linux Tutorials. Learn everything from the bash shell to sys admin. > Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |