[R] setting specific colours for different groups of points on a scatter plot

Deepayan Sarkar deepayan.sarkar at gmail.com
Thu May 22 21:04:02 CEST 2008


On 5/22/08, Sarah Kinnings <bssk at leeds.ac.uk> wrote:
> Hi,
>
>  I have a table with three columns of data, let's call these a, b and c. I
> have produced a scatter plot of a against b, but I would like to colour the
> points according to their corresponding c values. c takes the value of
> either 0,1,2,3 or 4 and so I would like to colour all of the points with a c
> value of 0 one colour, all those with a c value of 1 another colour etc.
> When I use the following code, it colours the points using default colours,
> which are not suitable:
>
>  data<-read.table('abc',header=T, sep="\t")
>  attach(data)
>  library(lattice)
>  xyplot(a~b, col=c)
>
>  I was therefore wondering how to specify my own set of colours for each of
> the c values. Any help would really be appreciated as I have spent ages
> reading through the documentation, but with no luck.

The recommended way would be

mydata<-read.table('abc',header=T, sep="\t") # don't attach
library(lattice)
xyplot(a~b, data = mydata, groups=c)

This would use the default lattice colors (which should be different
from the ones you saw). If you don't like them, you could specify your
own colors with

mycol <- c("blue", "red", "green", "whatever")
xyplot(a~b, data = mydata, groups=c, col = mycol)

You will probably end up wanting a legend, in which case a better approach is

xyplot(a~b, data = mydata, groups=c,
       par.settings = simpleTheme(col = mycol),
       auto.key = TRUE)

-Deepayan



More information about the R-help mailing list