【问题标题】:Prevent plot.gam from producing a figure防止 plot.gam 生成图形
【发布时间】:2017-09-21 13:40:57
【问题描述】:

说,我有一个看起来像这样的 GAM:

# Load library
library(mgcv)

# Load data
data(mtcars)

# Model for mpg
mpg.gam <- gam(mpg ~ s(hp) + s(wt), data = mtcars)

现在,我想使用ggplot2 绘制 GAM。所以,我使用plot.gam 来生成我需要的所有信息,如下所示:

foo <- plot(mpg.gam)

这也会产生不需要的图形。 (是的,我意识到我在抱怨绘图函数会绘制一些东西......)当以同样的方式使用visreg 时,我只需指定plot = FALSE 来抑制数字,但plot.gam 不会似乎有这个选项。我的第一个想法是 invisible 可能会完成这项工作(例如,invisible(foo &lt;- plot(mpg.gam))),但这似乎不起作用。有没有一种简单的方法可以在不将不需要的图形输出到文件的情况下做到这一点?

【问题讨论】:

  • 一般来说,base plot 将创建一个无论它给定的情节。任何让你关闭绘图的方法都是例外,而不是规则。

标签: r gam mgcv


【解决方案1】:

好的,所以我在发布这篇文章 5 分钟后终于想通了。有一个选项可以选择要绘制的术语(例如,select = 1 是第一个术语,select = 2 是第二个),尽管默认行为是绘制所有术语。但是,如果我使用select = 0,它不会绘制任何内容并且不会给出错误,但会返回完全相同的信息。看看吧:

# Load library
library(mgcv)

# Load data
data(mtcars)

# Model for mpg
mpg.gam <- gam(mpg ~ s(hp) + s(wt), data = mtcars)

# Produces figures for all terms
foo1 <- plot(mpg.gam)

# Doesn't produce figures
foo2 <- plot(mpg.gam, select = 0)

# Compare objects
identical(foo1, foo2)

[1] TRUE

棒棒哒!

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多