MathGroup Archive 2013

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

Search the Archive

Re: making a Module or Column that will print lines interspersed with plots

  • To: mathgroup at smc.vnet.net
  • Subject: [mg129681] Re: making a Module or Column that will print lines interspersed with plots
  • From: Murray Eisenberg <murray at math.umass.edu>
  • Date: Sun, 3 Feb 2013 20:24:16 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <20130203074603.82DEF68A3@smc.vnet.net>

This sort of thing has been asked about and answered in this newsgroup many times since Mathematica 6 appeared. The magic cure is to wrap each graphic with Print:

  macro := Module[{j},
                    Print["something"];
                    Print[plota];
                    Print["something else"];
                    Print[plotb]
                  ]

(Pretty-printing there just for structural clarity.)

And since you define "macro" with SetDelayed ( := ), there's no need for the semicolon you have terminating the whole piece of code.

Explanation: in Mathematica <= 5, the appearance of a graphic display was a side-effect; in Mathematica >= 6, the graphic display is the direct output as result. This implies that if you have some graphic object plotObject and use it in the form "plotObject;" with a trailing semi-colon, that just as with any other Mathematica expression, this suppresses the output. Hence when you are using a semi-colon to separate the component expressions of a compound expression -- as you are doing inside a Module -- then you must do something to counteract the effect of such a trailing semi-colon. And Print does that.

On Feb 3, 2013, at 2:46 AM, Bruce Shore <bwshore at me.com> wrote:

> I run Mathematica 7. I have some legacy notebooks,   from Mathematica 5, in which there were Modules such as
>
> macro :=Module[{j},
> Print["something"];
> plota;
> Print["something else"];
> plotb
> ];
>
> where plota and plotb were plots. Now with Mathematica 7 the semicolons prevent the plots from showing up. Show[plota]; has the same problem. The semicolons, which are needed in a Module, prevent the plotting.  I have tried using a Column or a Graphics column,
>
> macro:=Column[{
> Print["something"],
> plota,
> Print["something else"],
> plotb
> }]
>
> and this does the printing and the plotting, but all the printing comes at the beginning and all the plots come after that. I really want the printing to come in between the plots, in the order that I show them. How can I do this?
>
>
>
> ---------------------------
> Bruce Shore
> bwshore at me.com
> (925) 455 0627
> --------------------------
>
>
>

---
Murray Eisenberg                                    murray at math.umass.edu
Mathematics & Statistics Dept.      
Lederle Graduate Research Tower            phone 413 549-1020 (H)
University of Massachusetts                               413 545-2838 (W)
710 North Pleasant Street                         fax   413 545-1801
Amherst, MA 01003-9305








  • Prev by Date: Re: Fibonacci integers
  • Next by Date: Re: making a Module or Column that will print lines
  • Previous by thread: making a Module or Column that will print lines interspersed with plots
  • Next by thread: Re: making a Module or Column that will print lines interspersed with plots