具有高级绘图功能的多个绘图,尤其是plot.rqs()

时间:2012-03-12 01:14:22

标签: r plot

我试图将两个回归摘要与一个居中的标题并排绘制。每个回归摘要都由plot.rqs()生成,相当于一组9个图。

我已经尝试过使用par(mfrow=c(1,2)),但正如我从Paul Murrel(2006)的书中所学到的,像plot.rqs()pairs()等高级函数在绘制之前保存了图形状态。然后在完成后恢复图形状态,以便对par()layout()的先发制人电话无法帮助我。 plot.rqs()也没有“面板”功能。

似乎实现结果的唯一方法是修改plot.rqs()函数以获取新函数,比如modified.plot.rqs(),然后运行

par(mfrow=c(1,2))
modified.plot.rqs(summary(fit1))
modified.plot.rqs(summary(fit2))
par(mfrow=c(1,1))

从那里我可以找出如何使用layout()为图像添加整体标题。有谁知道如何创建可以这种方式使用的modified.plot.rqs()函数?

由于

2 个答案:

答案 0 :(得分:3)

您可以按如下方式修补功能: 使用dputcapture.output进行检索 函数的代码,作为字符串; 根据需要更改它(在这里,我只是替换par的每一次出现 功能无效); 最后评估结果以产生新的功能。

library(quantreg)
a <- capture.output(dput(plot.summary.rqs))
b <- gsub("^\\s*par\\(", "nop(", a)
nop <- function(...) {}
my.plot.summary.rqs <- eval(parse(text=b))

答案 1 :(得分:3)

首先我们生成一个示例对象fm。然后,我们复制plot.rqs并在副本上使用trace以在顶部插入par <- list,从而有效地消除函数中par的任何使用。然后我们对plot.summary.rqs做同样的事情。最后,我们使用自己的par

对其进行测试
library(quantreg)
example(plot.rqs) # fm to use in example

# plot.rqs
plot.rqs <- quantreg::plot.rqs
trace("plot.rqs", quote(par <- list), print = FALSE)

# plot.summary.rqs
plot.summary.rqs <- quantreg::plot.summary.rqs
trace("plot.summary.rqs", quote(par <- list), print = FALSE)

# test it out
op <- par(mfrow = c(2, 2))

plot(summary(fm))
plot(fm)
title("My Plots", outer = TRUE, line = -1)

par(op)

编辑:添加plot.summary.rqs