2012-02-24 2 views
4

Возможно ли построить два набора данных на одном и том же участке, но использовать разные цветовые палитры для каждого набора?Как использовать различные цветовые палитры для разных слоев в 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)) 
ggplot(testdf, aes(x, y1, colour = yc)) + geom_point() + 
    geom_point(aes(y = y2)) 

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

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

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

ответ

3

Если перевести «блюз» и «красных» в той или иной прозрачности, то это не противоречит философии ggplot в. Таким образом, используя Thierry's Moltenversion of the data set:

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

Если сделать трюк.

+0

Отлично! Спасибо за вашу помощь! – drbv

4

Это невозможно с 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() 
+0

Спасибо Тьерри, мне нравится идея формы! – drbv