使用geom_line和geom_ribbon的传奇

时间:2015-02-25 08:37:52

标签: r plot ggplot2

我正在创造一个数字,我周围有一条线和信心带。为此,我在R中的geom_line中同时使用geom_ribbonggplot2。问题是如何处理图例。在其中,添加斜杠,谷歌搜索了一段时间后,我明白这是一个常见的问题。我发现的大部分解决方案都是针对条形图(例如ggplot cookbook)。我也找到了抑制它的解决方案,但这对我没用。

下面我有三个图表显示了这个问题。首先,当我只绘制线条时,它看起来很好。然后,当我添加绘图的功能区部分时,会添加斜杠。第三个图是我希望它看起来的样子(显然是斜杠)。我如何实现这一目标?

enter image description here

编辑:要清楚,我想要的是下图中的内容(我使用MS Paint修复):

enter image description here

library(ggplot2)
library(gridExtra)

set.seed(1)
y <- sin(seq(1, 2*pi, length.out = 100))
x <- 1:100
plotdata <- data.frame(x=x, y=y, lower = (y+runif(100, -1, -0.5)), upper = (y+runif(100, 0.5, 1)))
h1 <- ggplot(plotdata) + geom_line(aes(y=y, x=x, colour = "sin"))
h2 <- h1 + geom_ribbon(aes(ymin=lower, ymax=upper, x=x, colour = "bands"), alpha = 0.3)
h3 <- h2 + scale_colour_manual(name='', values=c("bands" = "grey", "sin" = "blue"))

grid.arrange(h1, h2, h3)

3 个答案:

答案 0 :(得分:6)

您可以制作单独的图例 - 一个用于线条的颜色,另一个用于填充色带。然后使用scale_...将图例的名称设置为空白。唯一的问题是图例键是分开的。

ggplot(plotdata) + geom_line(aes(y=y, x=x, colour = "sin"))+
      geom_ribbon(aes(ymin=lower, ymax=upper, x=x, fill = "band"), alpha = 0.3)+
      scale_colour_manual("",values="blue")+
      scale_fill_manual("",values="grey12")

enter image description here

答案 1 :(得分:2)

如果要在图例上显示颜色,则可能需要添加一些额外的geom_line。请勿在{{1​​}}中使用颜色,然后添加geom_ribbonupper行。

lower

image

编辑:您还可以使用h2 <- h1 + geom_ribbon(aes(ymin=lower, ymax=upper, x=x), alpha = 0.3) + geom_line(aes(x=x, y = lower, color = "bands")) + geom_line(aes(x=x, y = upper, color = "bands")) 比例。

fill

image2

如果您不想要(几乎不可见)灰线,也可以在颜色语句中设置h1 <- ggplot(plotdata) + geom_line(aes(y=y, x=x, colour = "sin", fill="sin")) h2 <- h1 + geom_ribbon(aes(ymin=lower, ymax=upper, x=x, fill="bands"), alpha = 0.3) + geom_line(aes(x=x, y = lower, color = "bands")) + geom_line(aes(x=x, y = upper, color = "bands")) h3 <- h2 + scale_colour_manual(name='', values=c("bands" = "grey", "sin" = "blue")) + scale_fill_manual(name = '', values=c("bands" = "grey12", "sin" = "grey")) grid.arrange(h1, h2, h3)

答案 2 :(得分:1)

尝试将颜色保持在aes之外,然后它就不会在图例上显示:

h1 + geom_ribbon(aes(ymin=lower, ymax=upper, x=x), colour = "red", alpha = 0.3)

enter image description here