Re: ListPlot - assigning a list of colors to a set of points
- To: mathgroup at smc.vnet.net
- Subject: [mg131951] Re: ListPlot - assigning a list of colors to a set of points
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Wed, 6 Nov 2013 00:34:03 -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>
There is no need to use Table with RandomChoice. Use cols = RandomChoice[{Red, Green, Blue}, nbr] Bob Hanlon On Tue, Nov 5, 2013 at 12:12 PM, Gordon Robertson <grobertson at bcgsc.ca>wrote: > 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>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> >> > > >
- References:
- ListPlot - assigning a list of colors to a set of points
- From: Gordon Robertson <grobertson@bcgsc.ca>
- ListPlot - assigning a list of colors to a set of points