如何在ggplot2中为不同的图层使用不同的调色板?

时间:2012-02-24 08:57:36

标签: r colors ggplot2 palette

是否可以在同一个图上绘制两组数据,但每组使用不同的调色板?

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设置颜色),另一组用红色设置(再次由{{1}设置颜色})。

然后,图例应显示2个色标,一个为蓝色,另一个为红色。

感谢您的建议。

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:3)

如果你将“蓝调”和“红色”翻译成不同的透明度,那么它不符合ggplot的理念。所以,使用Thierry's Moltenversion of the data set

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

应该做的伎俩。