Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2013

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

Search the Archive

Re: ListPlot - assigning a list of colors to a set of

  • To: mathgroup at smc.vnet.net
  • Subject: [mg131966] Re: ListPlot - assigning a list of colors to a set of
  • From: Gordon Robertson <grobertson at bcgsc.ca>
  • Date: Wed, 6 Nov 2013 00:39:04 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • References: <20131105041619.448C769FC@smc.vnet.net>

Thanks Bob,

Your solutions are compact. The code below extends your first example to use a long list of XY coordinates and colours in ListPlot.

nbr = 1000
xy = Transpose[{RandomReal[{0, 1}, nbr], RandomReal[{0, 1}, nbr]}]; (* xy data to plot *)
cols = Table[RandomChoice[{Red, Green, Blue}], {i, nbr}];  (* list of colors *)

ListPlot[List /@ xy, PlotStyle -> (Directive[PointSize[0.02], Opacity[0.6], #] & /@ cols)]

Gordon

On 2013-11-05, at 8:34 AM, Bob Hanlon wrote:

Make each point a separate data list and repeat the PointSize:

ListPlot[List /@ {{1, 1}, {2, 2}, {3, 3}},
 PlotStyle -> (Directive[PointSize[0.02], #] & /@
    {Red, Green, Blue})]

Although you can use a List instead of Directive:

ListPlot[List /@ {{1, 1}, {2, 2}, {3, 3}},
 PlotStyle -> ({PointSize[0.02], #} & /@
    {Red, Green, Blue})]

Alternatively,

ListPlot[List /@ {{1, 1}, {2, 2}, {3, 3}},
 PlotStyle -> {Red, Green, Blue},
 PlotMarkers -> {Automatic, Medium}]


Bob Hanlon


On Mon, Nov 4, 2013 at 11:16 PM, Gordon Robertson <grobertson at bcgsc.ca<mailto:grobertson at 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.

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/><http://www.bcgsc.ca<http://www.bcgsc.ca/>>




  • Prev by Date: Re: PlotRange with Histogram Log height
  • Next by Date: Re: ListPlot - assigning a list of colors to a set of
  • Previous by thread: Re: ListPlot - assigning a list of colors to a set of points
  • Next by thread: Re: ListPlot - assigning a list of colors to a set of