问题描述
我正在使用interact_plot函数绘制3向交互。 我想通过添加一些垂直和水平线来添加重要的Johnson-Neyman区域。 当我使用jtools进行简单绘图时,唯一的重要曲线是mod2-1 SD组。 我只想在mod2 -1 SD面板(左面板)中包括JN间隔(vline和hline)。
这是我的脚本,可以运行,但是将垂直和水平线应用于所有3个mod2面板。
png(filename = 'interaction_plot.png',width=1000,height=400)
P=interact_plot(fit4,pred = mean_centered_Pren_CESD,modx = gender_male,mod2 =
mean_centered_auc_post_cesd,interval = TRUE,plot.points = TRUE,colors = c("blue","orange"),x.label = "Prenatal depression",y.label = "ADHD",pred.labels = "Prenatal depression",modx.labels = c("Girls"=0,"Boys"=1),mod2.labels = c("A) Low postnatal depression","B) Average postnatal
depression","C) High postnatal depression"),main.title = NULL,legend.main = "Sex")
P +
drop_gridlines() +
geom_vline(xintercept=c(-0.06,1.74),linetype='dashed',size=1) +
geom_hline(yintercept=c(-0.14,1.33),linetype='solid',size=1)
dev.off()
在这些代码行中,我只想应用 “
geom_vline(xintercept=c(-0.06,size=1)
” 基于默认-1SD分组的“低”的mod2组。 有人可以帮我吗,我尝试了很多事情,但我不知道该怎么称呼左面板。
非常感谢您。
解决方法
使用mtcars
作为示例数据集,通常可以像这样实现:
- 在数据框中放置垂直或水平线的坐标。
- 将faceting变量添加到此数据框。
- 将
xintercept
和yintercept
放在aes()
内
这样,您可以指定想要geom_vline
和/或geom_hline
的面板。在我的示例中,两者均仅在cyl = 4
的第一个面板中绘制。
library(ggplot2)
vh_line <- data.frame(
xintercept = c(100,200),yintercept = c(10,20),cyl = c(4,4)
)
ggplot(mtcars,aes(hp,mpg,color = factor(cyl))) +
geom_point() +
geom_vline(data = vh_line,aes(xintercept = xintercept),linetype='dashed',size=1) +
geom_hline(data = vh_line,aes(yintercept = yintercept),linetype='solid',size=1) +
facet_wrap(~cyl)