Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1992
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1992

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

Search the Archive

Re: Plotting problems

  • To: mathgroup at yoda.physics.unc.edu
  • Subject: Re: Plotting problems
  • From: twj
  • Date: Wed, 18 Nov 92 11:19:01 CST

>I have written an Mma program whose last 3 lines are:
>
>ListPlot[nodePairs,PlotJoined->True,DisplayFunction->Identity]
>Plot[S[x],{x,node[[1]],node[[n+1]]},DisplayFunction->Identity]
>Show[%,%%,DisplayFunction :> $DisplayFunction]
>
>When the program is executed the Show function will sometimes(rarely)  

>properly overlay the two previous plots but more often, one of the  

>following error messages are displayed with no graph:
>
>Show::gtype: String is not a type of graphics.
>Show::gtype: Show is not a type of graphics.
>
>However when the same 3 lines are executed in the notebook after the  

>program has bees run, the Show function produces the proper plot.
>

I understand this to mean that there is a block of code like so:

foo[x_] :=
	Block[{},
		....
		....
		ListPlot[nodePairs,PlotJoined->True,DisplayFunction->Identity];
		Plot[S[x],{x,node[[1]],node[[n+1]]},DisplayFunction->Identity];
		Show[%,%%,DisplayFunction :> $DisplayFunction]
	]

your problem is that the % and %% refer to the history mechanism that records 

output as you use the mainloop of the Mathematica Kernel and go from one Input 

prompt to another.  The % will refer to the result prior to the Input which started 

the execution of the above block and the %% to the result before that.  If that is 

the problem it is quite natural that when you evaluate the lines independently you 

get the behaviour you expect.    If this is your problem this will work.

foo[x_] :=
	Block[{p1, p2},
		....
		....
		p1 = ListPlot[nodePairs,PlotJoined->True,DisplayFunction->Identity];
		p2 = Plot[S[x],{x,node[[1]],node[[n+1]]},DisplayFunction->Identity];
		Show[p1, p2, DisplayFunction :> $DisplayFunction]
	]


By the way this is absolutely a good way to generate pictures, use the built-in
functions like ListPlot or Plot to do as much of the work as possible.



Tom Wickham-Jones
WRI









  • Prev by Date: HypergeometricPFQ
  • Next by Date: External commands into history buffer
  • Previous by thread: Plotting problems
  • Next by thread: Re: Plotting problems