Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R中的多个绘图输出中获取单个绘图_R_Data Visualization - Fatal编程技术网

从R中的多个绘图输出中获取单个绘图

从R中的多个绘图输出中获取单个绘图,r,data-visualization,R,Data Visualization,我试图从多个绘图输出中获取一个绘图。比如说 library(mboost); mod=gamboost(Ozone~.,data=airquality[complete.cases(airquality),]); plot(mod) 上面为每个变量的“部分效应”创建了一个图。绘制线性模型(lm)时创建的剩余图也是如此。我试图将输出保存在一个类似于如何保存ggplots的列表中,并花了几个小时搜索如何仅提取一个绘图,但失败了。有什么建议吗 至于问题的上下文,我正试图将这些图放到一个闪亮的应用

我试图从多个绘图输出中获取一个绘图。比如说

library(mboost); 
mod=gamboost(Ozone~.,data=airquality[complete.cases(airquality),]); 
plot(mod)
上面为每个变量的“部分效应”创建了一个图。绘制线性模型(
lm
)时创建的剩余图也是如此。我试图将输出保存在一个类似于如何保存
ggplot
s的列表中,并花了几个小时搜索如何仅提取一个绘图,但失败了。有什么建议吗

至于问题的上下文,我正试图将这些图放到一个闪亮的应用程序中,并将不同数量的图显示为输出

会议信息如下: R版本2.15.2(2012-10-26)
平台:i386 redhat linux gnu(32位)

许多生成多个绘图的函数也有一个参数来选择绘图的子集。在
plot.lm
的情况下,参数是
。所以说
plot(fit,它=1)
只会产生一个plot

您可以查看mboost文档,查看该绘图函数是否有类似的参数。

(我不熟悉GAMboost。)


查看的文档,我看到有一个名为
select
的参数。我想你可以把这个参数设置成你感兴趣的变量,然后你就可以得到你想要的单一曲线图。这与@GregSnow注意到的
plot.lm中的
参数类似。

本质上,@greg snow给出了一个正确的解决方案。我会详细解释一下

mboost
中,您可以使用

plot(mod, which = "Day")
仅绘制<代码>日的效果。当我们使用正则表达式时,您甚至可以使用参数
which
做更多的事情。例如,在具有线性和平滑效果的模型中,可以提取所有平滑效果进行打印:

airquality$Month <- as.factor(airquality$Month)
mod <- mod <- gamboost(Ozone ~ bbs(Solar.R) + bbs(Wind) + bbs(Temp) + bols(Month) + bbs(Day), data=airquality[complete.cases(airquality),])

## now plot bbs effects, i.e., smooth effects:
par(mfrow = c(2,2))
plot(mod, which = "bbs")

## or the linear effect only
par(mfrow = c(1,1))
plot(mod, which = "bols")
注意,这也可用于某些提取系数。例如

coef(mod, which = 1)
coef(mod, which = "Solar")
coef(mod, which = "bbs(Solar.R)") 
都一样。有关如何在
coef
plot
中指定
的更多信息,请参阅我们的(Hofner et al.(2014),《R-A实践教程中基于模型的提升》,使用R包mboost.计算统计,29:3-35.DOI 10.1007/s00180-012-0382-5)


我们承认,这一点目前未记录在
mboost
中,但它已在我们的待办事项列表中(请参阅)。

感谢gung。很抱歉。我经常访问这两个网站,所以当我对它们进行故障排除时,它们在我的脑海中是一样的。嗨,格雷格和冈格-谢谢你的回复。我觉得自己像个白痴——我知道“which”参数,但在我从其他人那里读到它之前,它并没有点击如何使用它作为向量。我将执行以下操作:'plot(mod,which=names(dataSet)[I]),其中'I'可以更改。也就是说,你们中的一个人能解释为什么单独绘制而不是全部一起绘制时,图是不同的吗?使用上面的例子:“par(mfrow=c(2,3));地块(mod);plot(mod,which=“Day”)“Day似乎有两个不同的情节……我不知道为什么它们不同,@JeP,我对GAMBoost不是很熟悉。关于注释中的解决方案,请注意,
plot
将根据对象的类调用不同的方法
mod
。也就是说,如果你的mod是lm,那么它会调用
plot.lm
,但是如果它是gamboost,那么它会调用
plot.gamboost
。后者使用
select
参数,而不是
which
@JeP:如果单独或一起进行绘图,则应解决绘图不同的问题。如果将多个效果绘制在一起,我们通常会使用所有绘图共用的单个y轴比例。现在,在任何情况下,每个图形都有自己的y刻度。要使所有绘图具有相同的y轴,现在需要指定
ylim=…
。请注意
GAMBoost
是一个与
mboost
完全不同的包。
coef(mod, which = 1)
coef(mod, which = "Solar")
coef(mod, which = "bbs(Solar.R)")