0

我想使用 visreg 绘制 GAM 中变量的响应。我正在使用 visreg 的 gg=TRUE 功能来指定 ggplot 主题元素。我关闭了部分并设置了 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 轴地毯。任何帮助将不胜感激!

4

1 回答 1

0

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

在此处输入图像描述

于 2021-02-11T20:20:52.763 回答