Как я могу использовать разные цветовые палитры для разных слоев в ggplot2? - PullRequest
6 голосов
/ 24 февраля 2012

Можно ли построить два набора данных на одном графике, но использовать разные цветовые палитры для каждого набора?

testdf <- data.frame( x = rnorm(100), 
                  y1 = rnorm(100, mean = 0, sd = 1), 
                  y2 = rnorm(100, mean = 10, sd = 1),
                  yc = rnorm(100, mean = 0, sd = 3))
ggplot(testdf, aes(x, y1, colour = yc)) + geom_point() +
  geom_point(aes(y = y2))

То, что я хотел бы видеть, это один набор данных, скажем y1, в голубом (цвет установлен yc), а другой - в красный (снова цвет установлен yc).

В легенде должны быть показаны 2 цветовые шкалы, одна синяя, другаякрасный.

Спасибо за ваши предложения.

Ответы [ 2 ]

4 голосов
/ 24 февраля 2012

Это невозможно с ggplot2. Я думаю, что это противоречит философии ggplot2, потому что это усложняет создание сюжета.

Другой вариант - использовать разные формы для разделения точек.

testdf <- data.frame( x = rnorm(100), 
                      y1 = rnorm(100, mean = 0, sd = 1), 
                      y2 = rnorm(100, mean = 10, sd = 1),
                      yc = rnorm(100, mean = 0, sd = 3))
Molten <- melt(testdf, id.vars = c("x", "yc"))
ggplot(Molten, aes(x, value, colour = yc, shape = variable)) + geom_point()
3 голосов
/ 24 февраля 2012

Если вы переводите «блюз» и «красный» в различную прозрачность, то это не противоречит философии ggplot. Итак, используя версию набора данных Molten Тьерри :

ggplot(Molten, aes(x, value, colour = variable, alpha = yc)) + geom_point()

Должен сделать свое дело.

...