【问题标题】:How to have multiple color scales into one plot R [duplicate]如何将多个色标放入一个绘图R [重复]
【发布时间】:2013-03-05 00:36:42
【问题描述】:

我有三个数据系列,它们由以下组成:

  • X(浮点数)
  • Y(浮点数)
  • S(浮点数)
  • 类(离散值)

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

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

如果我只使用一个数据系列,这很有效。问题是,如果我使用它们自己的YS 定义三个geom_points(),它们都具有相同的色标,这在情节上有点混乱。

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

比如说:

  • 从深蓝色到浅蓝色的数据系列 1
  • 数据系列 2 从深红色到浅红色
  • 数据系列从深黄色到浅黄色 3

我环顾四周,但没有找到任何满足我需求的东西。一些 cmets 说使用 ggplot2 每个图不可能有多个色标...是真的吗?

如果有人已经想出这种带或不带 ggplot2 的情节,我将不胜感激他或她的解决方案。

【问题讨论】:

  • 据我所知,这在 ggplots 中仍然不可用,我很确定 Hadley 说过不会很快。
  • 谢谢 Nathan,下次我会好好看看这里的。我刚刚发现了这个网站,我相信它真的很有用
  • 前段时间讨论了 2D 色标,您可以在其中映射色调、色度和亮度。这将是一个用例,仍然与语法框架保持一致。我不确定@kohske 在实施中走了多远。

标签: r colors ggplot2


【解决方案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))

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

【讨论】:

  • 刚刚看到@Nathan G 对您的问题的评论 - 不知道重复问题...我想这里唯一的区别是数据集位于不同的数据框中,而不是一个数据框 - 最终得到相同的解决方案。
  • 实际上,关于这个主题已经有很多问题了。你回答得很好,但我可能会使用size 而不是alpha。我真的不介意看到网格解决方案。
  • 感谢您的快速帮助。
  • 了解ggplot2确实是一个有用的技巧。你的回答对我帮助很大。再次感谢您
猜你喜欢
  • 2020-07-27
  • 1970-01-01
  • 2021-12-21
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
相关资源
最近更新 更多