如何调整 johnon-neyman 图?

How to adjust the johnon-neyman plot in?

提问人:zhang xia 提问时间:11/14/2023 更新时间:11/14/2023 访问量:31

问:

我使用“interactions”包的 sim_slopes() 函数绘制了 johnon-neyman 图。但是我想调整图形的外观:(1)水平和垂直标题(2)垂直和水平坐标的刻度值(3)并删除粗黑线“观测数据范围”

mod <- lm(sorry~ preciseage*group, data = RAWdata)
sim_slopes(mod, pred = group, modx = preciseage, jnplot = TRUE,confint = TRUE )

我尝试了其他人提供的两种方法,但都没有解决问题(它们都报告了一个错误:二进制列运算符具有非数字参数),两者的代码模板如下:

#first
mod$plot + xlab("my x label") + ylab("my y label")

mod[["plot"]] +
  labs(title = "My new Johnson-Neyman Plot title", x = "My new x axis", y = "My new y axis") 

作为R语言学习的新手,总是有各种各样的问题,我真的需要你的帮助,谢谢!

我使用“interactions”包的 sim_slopes() 函数绘制了 johnon-neyman 图。但是我想调整图形的外观:(1)水平和垂直标题(2)垂直和水平坐标的刻度值(3)并删除粗黑线“观测数据范围”

R ggplot2 回归

评论


答:

0赞 K. Peltzer 11/14/2023 #1

由于我没有示例数据,我将向您展示一个包含虹膜数据的示例。

数据和库:

library(interactions)
library(ggplot2)
data(iris)

线性回归示例:

mod <- lm(Sepal.Length ~ Sepal.Width * Petal.Length, data = iris)
my_sim_slopes <- sim_slopes(
  mod,
  pred = Petal.Length,
  modx = Sepal.Width,
  jnplot = TRUE,
  confint = TRUE
)

我可以验证 plot 对象的类是 ggplot,所以我加载了库。ggplot2

class(my_sim_slopes[["jnplot"]])
# [1] "gg"     "ggplot"

将绘图分配给对象:

plot <- my_sim_slopes[["jnplot"]]

底部粗体线似乎建立在第 7 层和第 8 层上,要将其删除,请将其设置为 NULL:

plot[["layers"]][c(7, 8)] <- NULL

最后,由于它是一个 ggplot 对象,因此可以使用其功能对其进行自定义:

plot +
  labs(title = "My new Johnson-Neyman Plot title",
       x = "My new x axis",
       y = "My new y axis") +
  scale_x_continuous(breaks = 1:7, limits = c(0, 7)) +
  scale_y_continuous(breaks = seq(0, 1, 0.2), limits = c(0, 1)) +
  theme(legend.position = "bottom", text = element_text(size = 12))

原始图像:original image

修改后的图像:modified image

评论

1赞 zhang xia 11/15/2023
非常感谢您的帮助!你已经非常清楚地描述了每个步骤。我还想问你,粗体的底线是在 7 楼或 8 楼。你怎么知道这些信息?
0赞 K. Peltzer 11/15/2023
您好,感谢您的认可。如果答案有帮助,请将其标记为正确。至于底线,可以通过检查对象来推断,因为层元素 7 和 8 在其“构造函数”子元素中分别包含(水平线,通常用于它)和(类似于水平线,但更容易按位置自定义)。在这种怀疑下,去掉这两个元素就足以确认确实是底部的黑线。geom_hlinegeom_segment