visreg 在 R 中绘制 GAM 响应时在 y 轴上显示地毯

visreg displaying rug on y axis when plotting GAM response in R

我想使用 visreg 在 GAM 中绘制变量的响应。我正在使用 visreg 的 gg=TRUE 功能来指定 ggplot 主题元素。我关闭了 partials 并设置了 rug = TRUE。但是,我在 x 和 y 轴上都得到了地毯(而不是仅仅在 x 轴上)。我不确定如何在保持 x 轴地毯的同时关闭 y 轴地毯。这是我用于绘图的代码:

library(visreg)
visreg(gam, "OISST_Temp_new", partial = FALSE, rug = 2, 
    line = list(col = "black"),fill = list(fill ="lightblue"), gg=TRUE)+
      theme(panel.grid.major = element_blank(),
            panel.grid.minor = element_blank(),
            panel.background = element_blank(), 
            axis.line = element_blank(),
            panel.border = element_rect(linetype = "solid", fill = NA),
            text = element_text(size=10, color = "black"),
            axis.text = element_text(size = 10, color = "black"))

当我运行这段代码时,我留下了这个数字:

gam 是一个 mgcv::gam 对象,OISST_Temp_new 是我想可视化的响应。

当我指定 gg=FALSE 并仅使用 rug = TRUEpartial = FALSE 绘制没有任何 ggplot 元素的响应时,我得到了正确的 x 轴地毯。任何帮助将不胜感激!

您可以将ggplot对象内的相关图层设置为NULL。下面是 gam 函数的示例。

library(mgcv)
eg <- gamSim(2,n=n,scale=.5)
b5<-gam(y~s(x) + s(z),data=eg$data)


v <- visreg(b5, "x", partial = FALSE, rug = 2, 
       line = list(col = "black"),fill = list(fill ="lightblue"), gg=TRUE)+
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(), 
        axis.line = element_blank(),
        panel.border = element_rect(linetype = "solid", fill = NA),
        text = element_text(size=10, color = "black"),
        axis.text = element_text(size = 10, color = "black"))

v$layers[[3]] <- NULL
v