Re: ListPlot command
- To: mathgroup at smc.vnet.net
- Subject: [mg9758] Re: [mg9710] ListPlot command
- From: Luci Ellis <elisha at dot.net.au>
- Date: Tue, 25 Nov 1997 00:07:03 -0500
- Sender: owner-wri-mathgroup at wolfram.com
Hi Ezra.
The solution to your problem is not difficult: you just have to create
three graphs with the DisplayFunction-> Identity option, so they don't
show, each with different values for the PlotStyle->something option
and then use the Show[..., DisplayFunction ->$DisplayFunction] command
to show them all as one graph. You could even set it up as a little
function (try pasting this into your Mathematica notebook):
multiplot[data:{{_Real,_Real}..}..,opts___?OptionQ]:=
Show[ListPlot[#,PlotJoined->True,
PlotStyle->
Hue[Flatten[(Position[{data},#])/Length[{data}]][[1]] ],
DisplayFunction->Identity] & /@ {data},opts,
DisplayFunction->$DisplayFunction]
Of course, this picks out colors for your lines that are evenly spaced
along the Hue[] spectrum and this may not look attractive! So you could
add another argument that is a list of graphics options like this:
multiplot[data:{{_Real,_Real}..}..,colors_List,opts___?OptionQ]:=
Show[ListPlot[#,PlotJoined->True,
PlotStyle->Flatten[colors[[ Flatten[Position[{data},#]] ]]
],
DisplayFunction->Identity] & /@ {data},opts,
DisplayFunction->$DisplayFunction]
testdata1 = Table[{Random[],Random[]},{10}]; testdata2 =
Table[{Random[],Random[]},{10}]; multiplot[testdata1, testdata2,
{Hue[0.65],{GrayLevel[0.7],AbsoluteThickness[2]}},Frame->True]
Note that if you supplied a list of graphics directives with fewer
elements than the number of datasets you supplied, you would get an
error. I tried to trap this with an
If[Length[{data}]<=Length[colors],... ,Message[...]] but it didn't
work.
The other method (which I am sure others will mention) is to use the
Graphics`MultipleListPlot` Package that comes standard with version 3
(and probably version 2). I just use the first method though: it works
fine for me.
Hope this helps,
Luci
>Hi.
>I have three lists of (x,y) pairs which I would like to plot on the same
>graph.
>I would like each list to be assigned a different color, and can not
>figure out how to do this. Does anyone have any ideas?
--------------
Luci Ellis: elisha at dot.net.au
http://www.dot.net.au/~elisha