[编辑为可运行代码,并采用第二种方法]
我发现了几个链接,似乎相关在这里,这里和这里,但不能看到我的方式直接弄清楚如何将它们应用到我的挑战:我有一个线形图创建与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))
(我只转换成字符,因为它比因子更容易操作,恕我直言)
正如我所说,使用一个变量来划定分组(用于绘制线条),使用另一个变量来划定哪些点具有相同的颜色。