从 R 中的 ggplot2 图例中删除'duplicate'元素



[编辑为可运行代码,并采用第二种方法]

我发现了几个链接,似乎相关在这里,这里和这里,但不能看到我的方式直接弄清楚如何将它们应用到我的挑战:我有一个线形图创建与ggplot2,绘制在一个数据框架上,包括上下限置信区间。我希望它们在图例中简单地显示为"99% CI",而不是分别显示为"Upper CI"one_answers"Lower CI"。

library(ggplot2)
library(reshape2)
gmm   <- data.frame(x=runif(10), observed=runif(10), theoretical=runif(10), 
                upper=runif(10), lower=runif(10))
gmm.m <- melt(gmm, id="x")
p1 <- ggplot(data=gmm.m, aes(x, value, colour=variable)) + geom_line() 
p1 <- p1 + scale_colour_manual(
        values=c("black", "#F8766D", "#7DAF01", "#7DAF01"), 
        labels=c("Observed","Theoretical","99% Confidence Intervals",""))

将最后一个图例标签设置为空的",这是我所能解决的最接近的问题。因此,为了清楚,我希望这两个ci在线形图上显示为相同的颜色,我只是不希望它们显示为单独的图例项。

怀疑的一种方法是在跳过'lower'时融化其他变量,然后添加它。但是,除了(个人)发现这种方法不优雅(更容易说"添加所有内容,但隐藏这个图例")之外,我的尝试也失败了。

library(ggplot2)
library(reshape2)
gmm   <- data.frame(x=runif(10), observed=runif(10), theoretical=runif(10), upper=runif(10))
gmm.m <- melt(gmm, id="x")
gmm.b <- data.frame(x=runif(10),variable='lower', value=runif(10))
p1 <- ggplot(data=gmm.m, aes(x, value, colour=variable)) + geom_line() + scale_colour_manual(values=c("black", "#F8766D", "#7DAF01"), labels=c("Observed","Theoretical","99% Confidence Intervals",""))
p1 <- p1 + geom_line(data=gmm.b, aes(x=x, y=value, legend=FALSE))
plot(p1)

这是我在评论中提到的方法:

dat <- rbind(gmm.m,gmm.b)
dat$variable <- as.character(dat$variable)
dat$var1 <- dat$variable
dat$var1[dat$var1 %in% c('upper','lower')] <- '99% CI'
ggplot(dat,aes(x = x,y = value)) + 
    geom_line(aes(colour = var1,group = variable))

(我只转换成字符,因为它比因子更容易操作,恕我直言)

正如我所说,使用一个变量来划定分组(用于绘制线条),使用另一个变量来划定哪些点具有相同的颜色。

相关内容

  • 没有找到相关文章

最新更新