MathGroup Archive 2005

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

Search the Archive

Re: ShowLegend....

  • To: mathgroup at smc.vnet.net
  • Subject: [mg53633] Re: [mg53617] ShowLegend....
  • From: "David Park" <djmp at earthlink.net>
  • Date: Fri, 21 Jan 2005 06:35:39 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Peter,

Generally I dislike Legend, both because it is complicated to manipulate and
because it is just another plot that distracts the viewer from the message
of the main graphic.

If the curves aren't too crowded it is better to label the two curves
directly. Otherwise it is possible to draw the legend directly on the plot.

I would do this with the DrawGraphics package from my web site below.

Here is an example of directly labeling two curves.

Needs["DrawGraphics`DrawingMaster`"]

Draw2D[
    {(* Draw and label Sin curve *)
      Draw[Sin[x], {x, 0, 2Pi}],
      Text[Sin[x], {2.5, Sin[2.5]}, {-1.2, 0}],

      (* Draw and label Cos curve *)
      AbsoluteDashing[{3}],
      Draw[Cos[x], {x, 0, 2Pi}],
      Text[Cos[x], {1.5, Cos[1.5]}, {1.2, 0}]},

    Frame -> True,
    Background -> Linen,
    PlotLabel -> "Labeling Two Curves",
    ImageSize -> 450];

Here is an example of drawing the legends directly on the plot.

Draw2D[
    {(* Draw and make legend for x^2 curve *)
      Draw[x^2, {x, 0, 1}],
      Draw[0.95, {x, 0.05, 0.2}],
      Text[x^2, {0.25, 0.95}],

      (* Draw and make legend for x^3 curve *)
      AbsoluteDashing[{3}],
      Draw[x^3, {x, 0, 1}],
      Draw[0.87, {x, 0.05, 0.2}],
      Text[x^3, {0.25, 0.87}]},

    Frame -> True,
    Background -> Linen,
    PlotLabel -> "Making a Legend for Two Curves",
    ImageSize -> 450];

With DrawGraphics you can easily combine as many different lines, curves and
graphics directives as you wish in a single drawing statement. It's a
natural way to do it.

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/


From: plizak [mailto:plizak at gmail.com]
To: mathgroup at smc.vnet.net

There has to be an easier way to do this....

I was trying to figure out how to use showlegend, and here's what I
came out with....

(* plot2 and plot3 are two different plots *)

plotX = Show[ {plot2 , plot3}, PlotRange -> {{ -0.4, 0.4}, {-1, 10}}]

legend = ShadowBox[ {-0.4, 6}, {0.3, 3}, ShadowBackground -> GrayLevel[
0.5], ShadowOffset -> {0.025, -0.5}];

showlegend = Show[ plotX, Graphics[{legend , {
Text["Normal - solid", {-.375, 6.775}, {-1.0, 0}],
Text["Data - dashed", {-.375, 7.775}, {-1.0, 0}]
}
}
]
]

That is way to much code to just add a legend to a graph.

Is there a faster/easier way to do this?
Is there a way that the legend also includes an example of the line /
linestyle?

Cheers and thanks,
Peter





  • Prev by Date: Re: A NewBie Question
  • Next by Date: Re: Algebraic problem solved by simulation
  • Previous by thread: Re: ShowLegend....
  • Next by thread: Re: ShowLegend....