From: Ted D. <ted...@jp...> - 2004-12-13 22:47:54
|
John, There probably isn't a compulsive argument for either way of doing it. The stack method is a very common graphics programming method for handling context switches, rotations, etc. Most graphics systems use the idea of pushing and popping from a graphics context stack so you can do rotations and transformations inside a subroutine w/o messing up anything else. At least where I work, our style guidelines make it a little more verbose. I need to use descriptive variable names (for maintainability) and no one line if statements (which cause problems whenever you need to add debugging print or other statements). Here's the difference between the methods with an additional option thrown in: ------------- Option 1) push/pop ipush() try: [ ... plot ... ] finally: ipop() ------------- Option 2) flags restoreInteractive = isinteractive() ioff() try: [ ... plot ... ] finally: if restoreInteractive: ion() ------------- Option 3) set/get method interactiveOn = isinteractive() ioff() try: [ ... plot ... ] finally: setinteractive( interactiveOn ) Ted At 12:50 PM 12/13/2004, John Hunter wrote: >Hi Ted, > >I hadn't thought of using a stack. What is the argument for a stack >as opposed to a single state manipulated along the lines of (with try >except as needed) > > b = isinteractive() > ioff() > ....your plot here... > if b: ion() > >Your approach requires one fewer line of code. Are their other >advantages to a stack approach? I think a stack may be slightly less >intuitive to a typical user, whereas turning drawing mode on and off >is fairly straight forward. > >JDH > >>>>> "Ted" == Ted Drain <ted...@jp...> writes: > > Ted> John, I think the push/pop functions are going to be fairly > Ted> useful (ipush and ipop??). We're going to be writing a lot > Ted> scripts (i.e. functions) that generate plots for our users. > Ted> There is no way to tell inside the script if it's going to be > Ted> used by a user in interactive mode or by another script (like > Ted> a batch report generator). Having push/pop would let me do: > > Ted> def stdPlot( [inputs] ): ipush( False ) try: [ create plot ] > Ted> finally: ipop() > > Ted> Of course it's pretty easy to roll your own but I think it > Ted> would be nice to have it in the standard set of commands. > > > >------------------------------------------------------- >SF email is sponsored by - The IT Product Guide >Read honest & candid reviews on hundreds of IT Products from real users. >Discover which products truly live up to the hype. Start reading now. >http://productguide.itmanagersjournal.com/ >_______________________________________________ >Matplotlib-users mailing list >Mat...@li... >https://lists.sourceforge.net/lists/listinfo/matplotlib-users |