MathGroup Archive 2005

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

Search the Archive

Re: Hi, a simple question, thanks

  • To: mathgroup at smc.vnet.net
  • Subject: [mg59960] Re: [mg59905] Hi, a simple question, thanks
  • From: "David Annetts" <davidannetts at aapt.net.au>
  • Date: Fri, 26 Aug 2005 04:53:59 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Hi Jing, 

> I want to label every curve with ListPlot or MultipleListPLot, but by 
> using PlotLabel -> StyleForm[TraditionalForm["b971"],...] it can only 
> put the label in oneline in the middle. But I need it label every 
> curve, something as done by gnuplot.

... But looking at the online help for PlotLabel should have told you that
there was no way that this was going to work, since PlotLabel gives the
label for the overall plot.

I won't comment on what GNUPlot does since this forum is about Mathematica.
However, there are at least two ways to label each curve.

The simplest, using MultipleListPlot, is to use PlotLegend, although results
aren't particularly pleasing using defaults.  No real matter, since you can
eventually get something worthwhile using one (actually, all or most) of the
myriad of options for Legend.

For example, generate some data & labels.

	data = Table[{x, Sin[# Pi x]}, {x, -Pi, Pi, Pi/32}] & /@ Range[1,
2];
	labl = StringJoin["Sin[", ToString[#], " ð x]"] & /@ Range[1, 2];

Using the default gives you

	MultipleListPlot[data, PlotLegend -> labl, PlotLabel->"My Plot"];

Although

	MultipleListPlot[data, 
	    PlotLabel->"My Plot",
	    FrameTicks -> {PiScale, Automatic, None, None},
	    FrameLabel -> {"X axis", "Y axis"},
	    PlotLegend -> labl,
	    LegendLabel -> "Curve",
	    LegendOrientation -> Horizontal,
	    LegendSize -> {.75, .2},
	    LegendPosition -> {-0.3, -.85}];

Might look better to some eyes.  Numbers in LegendSize & Position need to be
worked out; this is the least pleasant part of the exercise.

Another method of labeling each curve is through Epilog and we will label
the last point of each curve.  The last point is obtained using

	lpts = Last[#] & /@ data;

We can turn this into a simple label using

	simpl = Text[labl[[#]], lpts[[#]], {1, 0}] & /@ Range[1, 2];

Or a fancy one using
	
	fancy = Text[StyleForm[labl[[#]], FontWeight -> "Bold",
               FontSlant -> "Oblique", FontFamily -> "
              Times"], lpts[[#]], {1, 0}] & /@ Range[1, 2];

We can use these labels

	MultipleListPlot[data, 
                PlotLabel->"My Plot",
	    Epilog -> {fancy}
	    ];

Regards,

Dave.


  • Prev by Date: Re: Fancy 3d plotting in Mathematica
  • Next by Date: Re: my wish list for Mathematica next major version
  • Previous by thread: Re: Hi, a simple question, thanks
  • Next by thread: Another damn simplifying problem: ArcTan