tags:

views:

416

answers:

1

I have a scatter plot in R (with ggplot2). The data has a numeric column (let's call it "bin") which can contain various integer values or null.

I would like to colour the points with non-null bin values differently from the others. I do not want to one colour per value of bin, that would be too noisy. Just simply, say, red for those with a non-null bin and black for the others.

qplot has a colour attribute but I don't know how to express a condition like colour = bin != null ? "red" : "black"

Thank you.

+2  A: 

You could define the color first:

color <- rep("black", length(bin))
color[is.null(color)] <- "red"

Otherwise you can use an ifelse statement:

colour=ifelse(is.null(bin), "red", "black")
Shane
The first approach worked with one modification: using is.na instead of is.nullOne minor comment is that R is not interpreting the colour literals (i.e. "red" as colour red and "black" as black) but does the autocolouring by value so two other hues end up in the chart. I guess this is fixable if I read more on the syntax.
wishihadabettername
Try `+ scale_colour_identity()`
hadley