【问题标题】:Add an average line to an existing plot向现有绘图添加平均线
【发布时间】:2016-07-21 10:13:45
【问题描述】:

我想在现有绘图中添加一条平均线。

library(ggplot2)

A <- c(1:10)
B <- c(1,1,2,2,3,3,4,4,5,5)

donnees <- data.frame(A,B) 
datetime<-donnees[,2]
Indcatotvalue<-donnees[,1]
df<-donnees

mn<-tapply(donnees[,1],donnees[,2],mean)
moyenne <- data.frame(template=names(mn),mean=mn)

ggplot(data=df,
   aes_q(x=datetime,
         y=Indcatotvalue)) + geom_line() 

我已尝试添加:

geom_line(aes(y = moyenne[,2], colour = "blue"))

或:

lines(moyenne[,1],moyenne[,2],col="blue")

但是什么也没发生,我不明白,特别是对于函数“lines”。

【问题讨论】:

  • 欢迎来到 SO。请阅读how to provide minimal reproducible examples in R。然后相应地编辑和改进它。一篇好的帖子通常会提供最少的输入数据、所需的输出以及已经尝试过的内容 - 准备好复制粘贴运行。当我运行您的代码时,我得到“找不到对象'donnees'”。请提供数据+所需的库等。另外,我认为这里不需要闪亮的上下文(“最小示例”)。
  • 在 R 或 Shiny 中使用 ggplot 并不重要。使用 ggplotline 谷歌,你会找到帮助,例如 sthda.com/english/wiki/…
  • 我正在寻找如何添加标签,这是一个很好的解决方案stackoverflow.com/questions/32425784/…

标签: r ggplot2 line average


【解决方案1】:

当您说平均线时,我假设您要绘制一条表示 Y 平均值的线 (Indcatotvalue)。为此,您想使用 geom_hline() 在图表上绘制水平线:

ggplot(data=df,aes_q(x=datetime,y=Indcatotvalue)) +
  geom_line() +
  geom_hline(yintercept = mean(Indcatotvalue), color="blue")

根据您提供的示例数字,您将得到一个如下所示的图:

【讨论】:

  • 非常感谢@Simon 的回答。事实上,在这个例子中,我想要一条代表所有平均点(1.5、3.5、5.5、7.5、9.5)的线。对于 (x,y) 对,该线将由 ((1, 1.5), (2, 3.5), (3, 5.5), (4, 7.5), (5, 9.5)) 表示
  • 如果您也在使用此解决方案但它不起作用,请使用以下代码ggplot(data=df,aes_q(x=datetime,y=Indcatotvalue)) + geom_line() + geom_hline(aes(yintercept = mean(Indcatotvalue)), color="blue")
【解决方案2】:

函数stat_summary在这里就完美了。

我在此页面 groups.google 中找到了 Brian Diggs 的答案:

p + stat_summary(aes(group=bucket), fun.y=mean, geom="line", colour="green")

您需要将组显式设置为 faceting 变量,因为 否则它将是类型和存储桶(看起来像类型,因为类型 嵌套在桶中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2021-12-30
    相关资源
    最近更新 更多