Как раскрасить точки другим цветом, если атрибут данных не равен нулю

У меня есть точечный график в R (с ggplot2). Данные имеют числовой столбец (назовем его bin), который может содержать различные целые значения или null.

Я хотел бы покрасить точки с ненулевыми значениями ячейки иначе, чем другие. Я не хочу использовать один цвет для каждого значения бина, это было бы слишком шумно. Просто, скажем, красный для тех, у кого ненулевой бин, и черный для остальных.

qplot имеет атрибут colour, но я не знаю, как выразить такое условие, как colour = bin != null ? "red" : "black"


person wishihadabettername    schedule 04.03.2010    source источник
comment
Я думаю, вы имеете в виду отсутствие, а не нуль.   -  person hadley    schedule 06.03.2010


Ответы (1)


Сначала вы можете определить цвет:

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

В противном случае вы можете использовать оператор ifelse:

colour=ifelse(is.null(bin), "red", "black")
person Shane    schedule 04.03.2010
comment
Первый подход работал с одной модификацией: использование is.na вместо is.null Одно небольшое замечание заключается в том, что R не интерпретирует литералы цвета (т.е. красный как цвет красного и черный как черный), а выполняет автоокрашивание по значению, поэтому два других оказаться на графике. Я думаю, это поправимо, если я прочитаю больше о синтаксисе. - person wishihadabettername; 04.03.2010
comment
Попробуйте + scale_colour_identity() - person hadley; 06.03.2010