Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ListPlot - assigning a list of colors to a set of points

664 views
Skip to first unread message

Gordon Robertson

unread,
Nov 4, 2013, 11:10:18 PM11/4/13
to

I'm using Mathematica v9.x on a Mac, with OS X 10.7.5.

Could I ask about something that likely has a very simple solution? I have a list of XY coordinates for say 500 points that will become a scatterplot via ListPlot. I need to assign a colour to each point, using a list of labels (histology, risk, =85).

I've generated ArrayPlot graphics for cases like this for some time. For example, given some labels in column 4 of a 'hist' table:
colours = Table[{
Switch[name = hist[[i, 4]],
"Classical", Green, "Tall cell", Red, "Other", Blue]
}, {i, Length[hist]}];
ArrayPlot[{colours}, AspectRatio -> 0.1, Frame -> False]

For a ListPlot, I'd have thought that something as simple as dropping a list of colours into a PlotStyle Directive would do the job. But the following line plots three blue points, rather than a Red, Green and Blue point.
ListPlot[{{1, 1}, {2, 2}, {3, 3}},
PlotStyle -> Directive[PointSize[0.02], {Red, Green, Blue}]]

Is there a simple way to declare a list of colours in ListPlot? I've looked through the PlotStyle documentation, and apologize if I've missed seeing how to do this.

Thanks very much for your help.

Gordon
--
Gordon Robertson
Michael Smith Genome Sciences Centre
BC Cancer Agency
Vancouver BC Canada
www.bcgsc.ca<http://www.bcgsc.ca>

Helen Read

unread,
Nov 6, 2013, 12:20:04 AM11/6/13
to
Make each point a sublist (i.e, enclose in an extra set of braces).

ListPlot[{{{1, 1}}, {{2, 2}}, {{3, 3}}},
PlotStyle -> {{PointSize[0.02], Red}, {PointSize[0.02],
Green}, {PointSize[0.02], Blue}}]

Helen Read
University of Vermont

Joe Gwinn

unread,
Nov 6, 2013, 12:29:15 AM11/6/13
to
In article <l59r3a$rcm$1...@smc.vnet.net>, Gordon Robertson
<grobe...@bcgsc.ca> wrote:

> I'm using Mathematica v9.x on a Mac, with OS X 10.7.5.
>
> Could I ask about something that likely has a very simple solution? I have a
> list of XY coordinates for say 500 points that will become a scatterplot via
> ListPlot. I need to assign a colour to each point, using a list of labels
> (histology, risk, =85).
>
> I've generated ArrayPlot graphics for cases like this for some time. For
> example, given some labels in column 4 of a 'hist' table:
> colours = Table[{
> Switch[name = hist[[i, 4]],
> "Classical", Green, "Tall cell", Red, "Other", Blue]
> }, {i, Length[hist]}];
> ArrayPlot[{colours}, AspectRatio -> 0.1, Frame -> False]
>
> For a ListPlot, I'd have thought that something as simple as dropping a list
> of colours into a PlotStyle Directive would do the job. But the following
> line plots three blue points, rather than a Red, Green and Blue point.
> ListPlot[{{1, 1}, {2, 2}, {3, 3}},
> PlotStyle -> Directive[PointSize[0.02], {Red, Green, Blue}]]
>
> Is there a simple way to declare a list of colours in ListPlot? I've looked
> through the PlotStyle documentation, and apologize if I've missed seeing how
> to do this.

I never did figure out how to do that with ListPlot, and Tech Support
didn't know of a way either, so I built the plot-list directly, as a
Graphics[] object, and then used Show[] to display it, and to overlay
the colored dots on various function lines from ListPlot.

Joe Gwinn

0 new messages