Re: ? scatterplots with differently sized labels and dots ?
- To: mathgroup at smc.vnet.net
- Subject: [mg15530] Re: [mg15482] ? scatterplots with differently sized labels and dots ?
- From: BobHanlon at aol.com
- Date: Mon, 18 Jan 1999 23:47:29 -0500
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 1/18/99 10:46:06 AM, gessler at ucla.edu writes: >I have successfully used ReadList and ListPlot to read a table of data >from the hard drive and produce a simple scatterplot. What I want to >be able to do is to label each point with a sequence number and vary >the point size according to a third variable. > >Example: I wish to plot an inventory of iron artifacts according to >catalog number, weight, easting and northing. The table looks like >this: > >number weight easting northing >1 120 55 77 >2 50 49 63 >3 215 44 55 >4 10 65 44 > >I want the dot size to be proportional to the weight so the plot might >look like this: > > [[1]] > (2) > (((3))) > [4] > >If I were writing a program in Basic, this would be simple enough. Is >there a way to do this easily in Mathematica or should I write a >program in C? > Nick, This should be fairly close to what you want: data = {{1, 120, 55, 77}, {2, 50, 49, 63}, {3, 215, 44, 55}, {4, 10, 65, 44}}; transData = Transpose[data]; labels = Take[transData, 1][[1]]; wt = N[Sqrt[Take[transData, {2, 2}][[1]]]]; xyData = Transpose[Take[transData, {3,4}]]; minWt = Min[wt]; maxWt = Max[wt]; minPt = 0.02; maxPt = 0.05; ptSize = ((maxPt - minPt)*#/(maxWt - minWt) + (minPt*maxWt - maxPt*minWt)/(maxWt - minWt))& /@ wt; modData = Transpose[{labels, ptSize, xyData}]; TableForm[data, TableHeadings -> {None, {"number", "weight", "easting", "northing"}}, TableAlignments -> Center] ListPlot[xyData, ImageSize -> {360, 222}, Frame -> True, Axes -> False, PlotRange -> {{43, 67}, {40, 80}}, FrameLabel -> {"easting", "northing\n", "Inventory", None}, Epilog -> Evaluate[ {Text[StyleForm[#[[1]], FontSize -> Floor[7+180*#[[2]]]], #[[3]], {-2.25, 0}], RGBColor[1, 0, 0], PointSize[#[[2]]], Point[#[[3]]]}& /@ modData]]; Bob Hanlon