使用ggplot2在图表中添加和标记多个色带

时间:2013-07-10 19:23:52

标签: r ggplot2

我正在尝试使用ggplot2向图表添加多个色带,并标记阴影区域。例如,假设我正在尝试编写代码来生成正态分布的图形,并将所有值都高于某个值并低于某个值(遮蔽两个尾部)。

这是我到目前为止所做的:

library(ggplot2)

x<-seq(-3,3,length=100)

y1<-dnorm(x,mean=0,sd=1);

df<-data.frame(x,y1)

qplot(x,y1,data=df, geom="line")+geom_ribbon(data=subset(df,x > 2),
aes(ymax=y1),ymin=0, fill="red", colour=NA, alpha=0.5)
+geom_ribbon(data=subset(df,x < -2),
aes(ymax=y1),ymin=0, fill="red", colour=NA, alpha=0.5)

此代码将遮挡右尾,但不遮挡左侧。 (堆栈交换不允许我添加图片)

那么,如何在同一张图片中为其他尾部添加阴影?同样,我如何标记两个阴影部分?

1 个答案:

答案 0 :(得分:0)

您可以使用annotate功能添加标签:

p <- qplot(x,y1,data=df, geom="line") +
    geom_ribbon(data=subset(df,x > 2),
          aes(ymax=y1),ymin=0, fill="red", colour=NA, alpha=0.5) +
    geom_ribbon(data=subset(df,x < -2),
          aes(ymax=y1),ymin=0, fill="red", colour=NA, alpha=0.5)

p + annotate('text', x = c(-2.5,2.5), y = 0.07, label =  c('lowest \n 2.5 %', 
    'highest \n 2.5 %'),  col = 'red', alpha =0.5)