Suppressing display of LogPlots
- To: mathgroup at smc.vnet.net
- Subject: [mg22568] Suppressing display of LogPlots
- From: Dr Dan <drdanw at my-deja.com>
- Date: Sat, 11 Mar 2000 17:52:41 -0500 (EST)
- Organization: Deja.com - Before you buy.
- Sender: owner-wri-mathgroup at wolfram.com
There is a programming oversight (er, bug) in the Graphics` package that interferes with the delayed evaluation of DisplayFunction options. A common trick to suppress the display of graphics is to wrap Plot in a Block function: In[1]:= Block[{$DisplayFunction = Identity}, g1 = Plot[Sin[x], {x, 0, 3*Pi}]; ]; In[2]:= Show[g1] ---------plot deleted Out[2]= -Graphics- However, this trick does not work for many plot types defined in the Graphics`Graphics` package: In[3]:= << "Graphics`Graphics`" In[4]:= Block[{$DisplayFunction = Identity}, g2 = LogLinearPlot[Sin[x], {x, 0, 3*Pi}]; ]; In[5]:= Show[g2] ------------- plot doesn't show! Out[5]= -Graphics- We can see why the plot does not display outside the Block by checking the DisplayFunction options in the graphic: In[6]:= Options[g2, DisplayFunction] Out[6]= {DisplayFunction -> Identity, DisplayFunction :> Identity} I have tracked this bug to the utility functions ScaledPlot and ScaledListPlot in Graphics.m. Since I am not brave enough to attempt to fix the code, I created the following hack: DisplayFunctionHack[Graphics[args__, (opts___)?OptionQ]] := Graphics[args, {Flatten[{DisplayFunction :> $DisplayFunction, DeleteCases[Flatten[{opts}], (Rule | RuleDelayed)[ DisplayFunction, _]]}]}] The DeleteCases is not strictly necessary, but I like to clean up. We can see the effect of the hack by checking the options of the graphic again: In[8]:= g3 = DisplayFunctionHack[g2]; In[9]:= Options[g3, DisplayFunction] Out[9]= {DisplayFunction :> $DisplayFunction} Now the graphics displays properly: In[10]:= Show[g3] ----------------graphic deleted, but trust me, it was here. Out[10]= -Graphics- Sent via Deja.com http://www.deja.com/ Before you buy.
- Follow-Ups:
- Re: Suppressing display of LogPlots
- From: Hartmut Wolf <hwolf@debis.com>
- Re: Suppressing display of LogPlots