0

[编辑为具有可运行代码和第二种方法]

我发现了几个似乎相关的链接hereherehere ,但无法直接弄清楚如何将它们应用于我的挑战:我有一个用ggplot2创建的线图,它绘制了一个数据框,包括upper和置信区间较低。我希望它们在图例中简单地显示为“99% CI”,而不是单独显示为“上 CI”和“下 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 在折线图上以相同的颜色显示,我只是不希望它们显示为单独的图例项。

怀疑这样做的一种方法是在跳过“降低”的同时融化其他变量,然后再添加它。但是,除了(个人)发现这种方法不优雅(更容易说“添加所有内容,但隐藏这个传说”)之外,我这样做的尝试也失败了。

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)
4

1 回答 1

1

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

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))

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

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

于 2013-06-07T12:58:00.277 回答