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