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 >>> >