R 如何在线形图上添加注释,以标记离散x值之间y值的百分比变化

R 如何在线形图上添加注释,以标记离散x值之间y值的百分比变化,r,ggplot2,lm,emmeans,R,Ggplot2,Lm,Emmeans,我想将线性模型的结果可视化,其中因变量值作为离散x值的函数变化。因为我的x值表示连续的天数,所以我想用百分比来标注每天的变化。如何在直线图中执行此操作 我的数据 我想测量人们的情绪。每天我收集1000个不同的人对他们的感受的回应。因此,我得到了情绪的每日平均值,我想看看它从一天到另一天是如何变化的。 库(tidyverse) 图书馆(emmeans) 第1天以下方法利用ggplot\u build()(包含在ggplot2本身中)提取用于创建绘图的基础数据,然后geom\u label()执行注

我想将线性模型的结果可视化,其中因变量值作为离散x值的函数变化。因为我的x值表示连续的天数,所以我想用百分比来标注每天的变化。如何在直线图中执行此操作

我的数据 我想测量人们的情绪。每天我收集1000个不同的人对他们的感受的回应。因此,我得到了情绪的每日平均值,我想看看它从一天到另一天是如何变化的。
库(tidyverse)
图书馆(emmeans)

第1天以下方法利用
ggplot\u build()
(包含在
ggplot2
本身中)提取用于创建绘图的基础数据,然后
geom\u label()
执行注释本身

准备工作 如前所述,我们可以使用
ggplot\u build()
从数据集中提取数据

p <- emmip(fit, ~ day, CIs = TRUE)  # save your plot as gg object
plotdata <- ggplot_build(p)$data[[1]]
策划 现在我们准备好了。我们将在绘图中添加一个标签geom,
p
。里面有一些事情:

  • 过滤以仅使用
    plotdata
    零件,其中
    plotdata$change!=0
    。这是因为我们不想标记任何没有变化的点(即第一个点)

  • 我需要在
    plotdata$change
    的正值前面添加一个“+”<代码>ifelse()
在标签中,美学效果似乎很好

  • 在这里可以动态更改颜色。您也可以通过
    aes()
    对其进行映射,但我需要创建另一列,因此这里使用
    ifelse()
    控制颜色为红色或绿色非常方便,因为只有两个选项。您必须在
    aes()
    之外执行此操作,否则您将只获得标签“红色”和“绿色”的图例和默认
    ggplot2
    颜色。没有一个传奇是我在这里创建的

  • 代码和绘图如下:

    p + geom_label(
      data=subset(plotdata, change != 0),
      aes(x=x, y=y,
        label=paste0(ifelse(
          subset(plotdata, change!=0)$change <0, '','+'),
          round(change, 2),'%')),
      color=ifelse(subset(plotdata, change!=0)$change <0, 'red','green3'),
      nudge_x = -0.3
    )
    
    p+geom\u标签(
    数据=子集(plotdata,change!=0),
    aes(x=x,y=y,
    标签=粘贴0(如果为其他(
    子集(plotdata,change!=0)$change
    
    p + geom_label(
      data=subset(plotdata, change != 0),
      aes(x=x, y=y,
        label=paste0(ifelse(
          subset(plotdata, change!=0)$change <0, '','+'),
          round(change, 2),'%')),
      color=ifelse(subset(plotdata, change!=0)$change <0, 'red','green3'),
      nudge_x = -0.3
    )