Re: Mathlink & Graphics....

*To*: mathgroup at smc.vnet.net*Subject*: [mg2228] Re: Mathlink & Graphics....*From*: wagner at goober.cs.colorado.edu (Dave Wagner)*Date*: Tue, 17 Oct 1995 02:34:56 -0400*Organization*: University of Colorado, Boulder

In article <45d1sc$63m at ralph.vnet.net>, The GodFather <gandalf at dogbert.ugcs.caltech.edu> wrote: > > Unix Platform.... > > I've been trying to do this for a bit of time.... > > Basically, I would like from a C-code, to generate > a list of numbers {{1,2},{2,1}} and plot their positions > using mathematica's handy plotting routines.... > > If someone could post a way to simply execute a > Plot[x^2,{x,-2,2}], and either have mathematica display > it (in X), or return PostScript to the link stream or > to an output file I would be extremely grateful.... > > An example of the type of thing I'm trying to do.... > > from within C-code: > > MLPutFunction(link,"Extend",1); > PutString(link,"Plot[x^2,{x,-2,2}); > > If there was some way of setting the DisplayFunction > so mathematica would then just plot this thing out 'twould > be beautiful. If there was some way I could get it to > output the plot to a postscript file, I would be joyous. > If there was any way I could get useable output, basically > I would be dancing around for weeks.... > > with much appreciation, > > -John Joseph You can redirect the PostScript output of a plotting command by overriding DisplayFunction. The default setting for DisplayFunction is $DisplayFunction, which is In[33]:= $DisplayFunction Out[33]= Display[$Display,#1]& This function is applied to the Graphics object that is generated by the plot command. Display is a built-in function that sends graphics to a particular place: In[34]:= ?Display Display[channel, graphics] writes graphics or sound to the specified output channel. The default value for $Display is: In[35]:= $Display Out[35]= stdout so, you can accomplish what you want to do by (a) opening a stream to a file in Mathematica, (b) one of the following: - set $Display to that stream - set $DisplayFunction to Display[stream, #]& - use the option DisplayFunction:>Display[stream, #]& in your plotting command. This is probably the best option since you'll undoubtedly want to use a different stream for each plot. Note that the contents of the file with be Mathematica-ese PostScript, which isn't interpretable by most PostScript interpreters, I don't think. There's a UNIX program that can do it that's distributed on MathSource, I believe. Let me know if this makes you dance... Dave Wagner Principia Consulting (303) 786-8371 dbwagner at princon.com http://www.princon.com/princon