MathGroup Archive 2010

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

Search the Archive

Re: Re: Re: How to combine graphics

  • To: mathgroup at smc.vnet.net
  • Subject: [mg107105] Re: [mg107082] Re: [mg107024] Re: [mg107011] How to combine graphics
  • From: Murray Eisenberg <murray at math.umass.edu>
  • Date: Wed, 3 Feb 2010 06:07:59 -0500 (EST)
  • Organization: Mathematics & Statistics, Univ. of Mass./Amherst
  • References: <201001311253.HAA14187@smc.vnet.net> <201002020828.DAA08834@smc.vnet.net>
  • Reply-to: murray at math.umass.edu

As a devoted and experienced user of Presentations, of course I'm well 
aware that enlisting Red and Line[points] is unnecessary.

However, as a matter of my programming style preferences and to avoid 
unwanted effects, I make it a practice whenever I can to use the extra 
list, as in

   Draw2D[{Draw[Sin[x], {x, -Pi, Pi}], {Red,Line[points]}}, Axes -> True]

or at the very least to pretty-print my expression in a form such as

   Draw2D[{
     Draw[Sin[x], {x, -Pi, Pi}],
     Red, Line[points]
     }, Axes -> True]

so as clarify that the intention is to apply the Red directive to what 
follows immediately (on the same line).

If one avoids the extra braces, then the avoidance of unwanted effects 
occurs in something like the following:

    Draw2D[{Draw[Sin[x],{x,-Pi,Pi}],Red,Line[points],
            Draw[x^2, {x,-Pi,Pi}]},Axes->True]

As it stands, the parabola would be drawn in Red, too; that may or may 
not be what was really intended.  Using the extra list --

    Draw2D[{Draw[Sin[x],{x,-Pi,Pi}],{Red,Line[points]},
            Draw[x^2, {x,-Pi,Pi}]},Axes->True]

-- avoids the problem, as of course does the alternative of explicitly 
changing color back again:

    Draw2D[{Draw[Sin[x],{x,-Pi,Pi}],
            Red,Line[points],
            Black, Draw[x^2, {x,-Pi,Pi}]},Axes->True]

I have no objection to the latter but prefer to use it when I want yet a 
third color for the third graphics object.

Presentations allows those variants all to work, to suit one's fancy, 
while still allowing with all its oh-so-useful paradigm of simply 
listing the graphics objects and directives one after the other.


On 2/2/2010 3:28 AM, DrMajorBob wrote:
> Presentations gives the same graph with even LESS complexity, too:
>
> Draw2D[{Draw[Sin[x], {x, -Pi, Pi}], Red, Line[points]}, Axes ->  True]
>
> (No need to put Red and Line in a List together.)
>
> I think David deliberately made Draw2D's argument a List in order to
> emphasize this point, or something like it. Directives and graphics are
> sequentially applied, and Draw2D options apply to the overall drawing.
>
> This works just as we'd expect it to, as well:
>
> Draw2D[{Blue, Draw[Sin[x], {x, -Pi, Pi}], Red, Line[points],
>     Draw[Cos[x], {x, -Pi, Pi}]}, Axes ->  True]
>
> and so does this:
>
> Draw2D[{Blue, Draw[Sin[x], {x, -Pi, Pi}], Red, Line[points],
>     Draw[Cos[x], {x, -Pi, Pi}]}, Axes ->  True, AxesStyle ->  Purple,
>    Background ->  LightPink]
>
> Bobby
>
> On Mon, 01 Feb 2010 05:09:40 -0600, Murray Eisenberg
> <murray at math.umass.edu>  wrote:
>
>> Trying to do this kind of thing using Mathematica's built-in paradigm
>> for graphics causes trouble for many beginners.
>>
>> Here's one way.  (I changed the x-domain because otherwise the random
>> polygon collapses to a small blur.)
>>
>>     points = RandomReal[{-1,1},{100,2}];
>>     Show[{
>>           Plot[Sin[x],{x,-Pi,Pi}],
>>           Graphics[{Red,Line[points]}]
>>          }]
>>
>> The Graphics has to apply only to the {Red,Line[points]}, as the result
>> of the Plot expression is already a Graphics object.
>>
>> You don't need the Axes->True option, as that's the default for Plot.
>> However -- and this really drives folks nuts -- if you reverse the order
>> of the Graphics objects...
>>
>>     Show[{Graphics[{Red,Line[points]}], Plot[Sin[x], {x,-Pi,Pi}]}]
>>
>> ... then the axes disappear and you have to insert the Axes->True option
>> within the Graphics[{Red,Line[points]}] expression:
>>
>>     Show[{Graphics[{Red, Line[points]}, Axes ->  True],
>>           Plot[Sin[x], {x, - Pi, Pi}]}]
>>
>> No wonder this sort of thing gives so much trouble!
>>
>> But a much simpler way to do the whole thing is to use the different
>> paradigm that's supplied by David Park's Presentations application:
>>
>>     Needs["Presentations`Master`"]
>>
>>     points = RandomReal[{-1,1},{100,2}];
>>
>>     Draw2D[{
>>             Draw[Sin[x],{x,-Pi,Pi}],
>>             {Red,Line[points]}
>>             },
>>             Axes->True]
>>
>> Notice that the Axes->True option is for the entire Draw2D expression;
>> this means you'll get axes without any further ado no matter in what
>> order you list the two objects, Draw[Sin[x]....] and {Red,Line[points]}.
>>
>> I've deliberately pretty-printed both versions in order to emphasize the
>> structure of the overall expression.
>>
>> In the version done with Presentations, notice that all the different
>> objects to be drawn (by the Draw2D) are "at the same level", one after
>> the other, so that there's no need for wrapping the {Red,Line[points]
>> expression with Graphics.
>>
>> With Presentations, moreover, you don't have to explicitly form pairs of
>> reals as coordinates of the points, but may instead form complex numbers
>> directly and plot a "complex line" whose vertices are the corresponding
>> complex points:
>>
>>     points = RandomComplex[{-1 - I, 1 + I}, 100];
>>     Draw2D[{Draw[Sin[x],{x,-Pi,Pi}],Red,ComplexLine[pts]},Axes->True]
>>
>>
>> On 1/31/2010 7:53 AM, a boy wrote:
>>> points = RandomReal[{-1, 1}, {100, 2}]
>>> Graphics[{Red, Line[points], Plot[Sin[x], {x, -10 Pi, 10 Pi}]},
>>>    Axes ->   True]
>>
>
>

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


  • Prev by Date: Re: Re: What does & mean?
  • Next by Date: Re: Can Mathematica solve this differential equation ?
  • Previous by thread: Re: Re: How to combine graphics pimitives and
  • Next by thread: matrix problem