【问题标题】:Adding and labeling multiple ribbons to a graph using ggplot2使用 ggplot2 在图形中添加和标记多个功能区
【发布时间】:2013-07-11 15:26:28
【问题描述】:

我正在尝试使用 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)

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

那么,如何为同一张图片中的另一条尾巴添加阴影?同样,如何标记两个阴影部分?

【问题讨论】:

  • 可能是因为您在第二次 geom_ribbon 调用之前包含了错误的换行符。
  • 对于标签,请尝试geom_textannotate
  • 知道了;谢谢。在休息前加上加号也可以....
  • @Gavin Simpson 我已经恢复了您的改进,因为它们实际上消除了错误的根源。

标签: r ggplot2


【解决方案1】:

您可以使用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) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多