ggplot组由一个分类变量和颜色由第二个(ggplot group by one categori

2019-07-05 18:55发布

基本上我想创建使用ggplot中的R如下所示的第一曲线,但与在同一图(无刻面缠绕)两个对象。

考虑到模仿我的数据结构的小例子:

library(reshape2)
library(ggplot2)
x <- seq(1, 5, length = 100)
y <- replicate(10, sin(2 * pi * x) + rnorm(100, 0, 0.3), "list")
z <- replicate(10, sin(2 * pi * x) + rnorm(100, 5, 0.3), "list")
y <- melt(y)
z <- melt(z)
df <- data.frame(x = y$Var1, rep = y$Var2, y = y$value, z = z$value)
dat <- melt(df, id = c("x", "rep"))

我可以用它绘制

ggplot(dat) + geom_line(aes(x, value, group = rep, color = variable), 
    alpha = 0.3) + facet_wrap(~variable)

并获得

http://carlboettiger.info/assets/figures/2012-12-18-NA-unnamed-chunk-2.png

但如果我尝试下探的小包裹,我认为它的颜色和变量应小组,而是将数据没有爆发正确,导致废话:

http://carlboettiger.info/assets/figures/2012-12-18-NA-unnamed-chunk-3.png

Answer 1:

问题是,该group的审美覆盖标准分组协议-这是不包含所描述的情节都离散变量的相互作用 ?group

所以,让你的阴谋没有小面,你需要手动指定的交互工作

ggplot(dat) + geom_line(aes(x, value, group = interaction(rep,variable), color = variable), alpha = 0.3) 

在审美,使用覆盖α值guide_legend(override.aes = ...)) 这些信息可以在下面的链接中找到?guides和具体?guide_legend

例如

ggplot(dat) + geom_line(aes(x, value, group = interaction(rep,variable), color = variable), 
                           alpha = 0.3) + 
  scale_colour_discrete(guide = guide_legend(override.aes = list(alpha = 1)))



Answer 2:

你可以贴上代表和可变组:

ggplot(dat) + geom_line(aes(x, value, group = paste(variable, rep), color = variable), 
                    alpha = 0.3) 


文章来源: ggplot group by one categorical variable and color by a second one
标签: r ggplot2