MathGroup Archive 2009

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

Search the Archive

Re: LabeledListPlot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg96336] Re: LabeledListPlot
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Thu, 12 Feb 2009 06:32:38 -0500 (EST)
  • References: <gepb26$sgs$1@smc.vnet.net> <gerqib$re2$1@smc.vnet.net> <gmu8s0$gne$1@smc.vnet.net>

Hi,

and with

Clear[LabeledListPlot]
Options[LabeledListPlot] =
   Join[{DataFunction -> (Point[#] &)}, Options[Graphics]];

LabeledListPlot[data : {{_?NumericQ, _?NumericQ} ..},
   labels : {__String}, opts : OptionsPattern[LabeledListPlot]] :=
  Module[{n, lbl = labels, dfun},
   dfun = OptionValue[DataFunction];
   n = Length[data];
   While[Length[lbl] < n,
    lbl = Join[lbl, labels]];
   lbl = Take[lbl, n];
   Graphics[
    {dfun /@ data,
     MapThread[{Text[#2, #1, {-1, -1}]} &, {data, lbl}]},
    Sequence @@ FilterRules[{opts}, Options[Graphics]],
    Frame -> True, AspectRatio -> 1/GoldenRatio
    ]
   ]

and

data = Table[{x, Sin[x]}, {x, 0., 2 Pi, Pi/16}];
LabeledListPlot[data, {"a", "b", "c"}]

or

LabeledListPlot[data, {"a", "b", "c"},
  DataFunction -> (Text["\[FilledUpTriangle]", #] &)]

work fine.

Regards
   Jens

TerryH wrote:
> Hi Groupers:
>       Last November 2008, I posted the inquiry below and one of the 
> replies that I got was from Jens (also listed below & it worked great).
> 
>       Now I have a related question, which is:  Instead of labeling the 
> individual plotted points with an integer, how can you label the 
> individual plotted points with textual labels?  For example, I want to 
> label the first plotted point with "a", the second one with "b", the 
> third with "c", and so on.  I've tried using PlotMarkers but that labels 
> the entire data set and not individual points.  The best that I could 
> come up with is to make each x,y pair into its own list, for example
> with 3 points to plot (for the illustration here)
> data = {{x1,y1},{x2,y2},{x3,y3}}  then feed data[[1]], data[[2]], 
> data[[3]] into ListPlot, I want to apply the labels {"a","b","c"}.
> This works for a Point plotting symbol.  However, it feels cumbersome.
> 
>       However, I'd really like to use a filled triangle for the plotting 
> symbol and not the Graphic associated with what 
> Graphic[Point[{num1,num2}]] gives.  The only way I could get this to 
> work is to generate 2 separate graphics with one (grfA) have the labels 
> only, and the other (grfB) without labels but with the correct plotting 
> symbol, and then bring them together using Show[grfA,grfB].  But this 
> method really seems ackword, so surely there has to be a better way. 
> I'm using Ver 6.0.3   Any suggestions?
> TIA
> .......Terry
> 
> 
> 
> 
> Jens-Peer Kuska wrote:
>> Hi,
>>
>> dta = Table[{tmp = Random[], Sin[Pi*tmp]}, {25}] // Sort;
>>
>> ListPlot[dta] /.
>>   Point[lst : {{_, _} ..}] :>
>>    MapIndexed[{Text[#2[[1]], #1, {-1, -1}], Point[#1]} &, lst]
>>
>> Regards
>>    Jens
>>
>> TerryH wrote:
>>> Hi Groupers,
>>>     In Ver 5.2 and earler there was a function called "LabeledListPlot"
>>> In Ver 6.0.1 and 6.0.3 of Mathematica, it seems that this function was
>>> inadvertently omitted (Hopefully, it will be included in the next 
>>> update/Version).  In the meantime does anyone know of a work-around so 
>>> that one can produce a Labeled?List Plot in Ver 6.0?  TIA
>>> .....Terry
>>>
> 


  • Prev by Date: Re: Logarithmic Plot
  • Next by Date: Re: Reposted, Reformatted Re: "mapping" functions over lists, again!
  • Previous by thread: Re: Re: LabeledListPlot
  • Next by thread: Re: LabeledListPlot