MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

AW: LogPlot/Plot-Identity

  • To: mathgroup at smc.vnet.net
  • Subject: [mg27115] AW: [mg27041] LogPlot/Plot-Identity
  • From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.de>
  • Date: Sun, 4 Feb 2001 02:58:49 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com


-----Ursprüngliche Nachricht-----
Von: bernd at bio.vu.nl [mailto:bernd at bio.vu.nl]
Gesendet: Donnerstag, 1. Februar 2001 09:00
An: mathgroup at smc.vnet.net
Betreff: [mg27041] LogPlot/Plot-Identity


Dear group,

I am trying to plot several plots in one. This poses no diffuculties.
But LogPlot seems to behave differently with regard to $DisplayFunction.

I have a simple example:

Show[Block[{$DisplayFunction = Identity}, Plot[Exp[3 t], {t, 0, 5}]]]
This just shows the graphic. However, in

Show[Block[{$DisplayFunction = Identity}, LogPlot[Exp[3 t], {t, 0, 5}]]]

The $DisplayFunction remains Identity even with Show, thus no plot is
produced in case of LogPlot.  Can someone explain this difference
between Plot and LogPlot?

Regards,
Bernd


Dear Bernd,

although this is folklore recommended procedure, it has to be regarded with
suspicion. You have to look at what you get:

g1 = Block[{$DisplayFunction = Identity}, Plot[Exp[3 t], {t, 0, 5}]]

Options[g1, DisplayFunction]
{DisplayFunction :> $DisplayFunction}

So here in the result all is fine, when you execute

Show[g1]

you'll use the value of $Display function in the execution environment of
Show.
But for

g2 = Block[{$DisplayFunction = Identity}, LogPlot[Exp[3 t], {t, 0, 5}]]

Options[g2, DisplayFunction]
{DisplayFunction -> Identity, DisplayFunction :> Identity}

You see that the temporary value of $DisplayFunction of Block has been
smuggled into the graphics object. I cannot tell this a bug of LogPlot (and
similar routines, and if you write your own plotting routines you'll find
out it's not easy to prevent all references to the unevaluated
$DislayFunction). This here (is a more correct alternative, I think):

g2a = Block[{$DisplayFunction}, Identity @@ LogPlot[Exp[3 t], {t, 0, 5}]]

This construct keeps all references to $DisplayFunction as unevaluated, and
applying Identity to the final result prevents the display.

Options[g2a, DisplayFunction]
{DisplayFunction -> (Display[$Display, #1] &), DisplayFunction :> Identity}

Show[g2a]

It's interesting to compare that with straight plotting:

g2x = LogPlot[Exp[3 t], {t, 0, 5}]

Options[g2x, DisplayFunction]
{DisplayFunction -> (Display[$Display, #1] &), DisplayFunction :> Identity}

So we had got the same, the right say, graphics object! (witout displaying
it)

-- Hartmut Wolf



  • Prev by Date: Parametric Plot Again
  • Next by Date: Re: Getting parameters from Fit[]..
  • Previous by thread: Re: Parametric Plot Again
  • Next by thread: RE: AW: LogPlot/Plot-Identity