如何将多个色标放入一个图R中

时间:2013-03-05 00:36:43

标签: r colors ggplot2

我有三个数据系列,包括:

  • X(浮动)
  • Y(浮动)
  • S(浮动)
  • 类(离散值)

所有三个数据系列共享相同的X坐标,但每个其他组件与其他数据系列不同。通过对我的三个数据系列(R中的库ggpplot2)中的每一个使用一个geom_point(),我想根据具体的S绘制每个数据系列的颜色标度,如下所示:

ggplot(data, aes(x=X)) + geom_point(aes(y=Y, colour=S, shape=Class)) 

如果我只使用一个数据系列,则此方法有效。问题是,如果我使用自己的geom_points()Y定义了三个S,它们都具有相同的色阶,这在图上有点令人困惑。

由于我已经在使用形状来区分Class es,我真的很喜欢为我的每个数据系列都有自己的颜色渐变的特定颜色。

让我们举例说:

  • 从深蓝色到浅蓝色的数据系列1
  • 从暗红色到浅红色的数据系列2
  • 从深黄色到浅黄色的数据系列3
我环顾四周,但没有找到满足我需求的东西。有些评论说使用ggplot2,每个情节不可能有多个色标......这是真的吗?

如果有人在使用或不使用ggplot2的情况下已经找到了这种情节,我将非常感谢他或她的解决方案。

1 个答案:

答案 0 :(得分:1)

ggplot中,您实际上只能使用alpha来表达您的要求。我已经编制了一些数据:

df1 <- data.frame(X=rnorm(16), Y=rnorm(16), S=rep(1:4,times=4), Class=rep(LETTERS[1:4], each=4))
df2 <- data.frame(X=rnorm(16), Y=rnorm(16), S=rep(1:4,times=4), Class=rep(LETTERS[1:4], each=4))
df3 <- data.frame(X=rnorm(16), Y=rnorm(16), S=rep(1:4,times=4), Class=rep(LETTERS[1:4], each=4))

ggplot(df1, aes(x)) + geom_point(aes(y=Y, colour=S, shape=Class))
df1$id <- 1
df2$id <- 2
df3$id <- 3
df.list <- list(df1, df2, df3)
df.all <- ldply(df.list, rbind)

ggplot(df.all, aes(X, Y)) + geom_point(aes(colour=as.factor(id), shape=Class, alpha=S))

不确定这是否符合您的要求......