R |组合内部使用par(mfrow=…)的绘图
以R |组合内部使用par(mfrow=…)的绘图,r,graphics,par,R,Graphics,Par,以plot.acf为例。acf和pacf都在内部调用此函数。我怎样才能把它们并排画出来 示例: TS <- ts.union(mdeaths, fdeaths) acf(TS) pacf(TS) TS这不是一个理想的解决方案,但是您可以通过定义plot.ACF()来重新定义绘制ACF/PACF的含义 首先存储现有版本 old.plot.acf <- plot.acf 现在这是本地定义的,您可以根据需要设置mfrow,进行打印,然后重置函数或将其从命名空间中清除 plot.acf
plot.acf
为例。acf
和pacf
都在内部调用此函数。我怎样才能把它们并排画出来
示例:
TS <- ts.union(mdeaths, fdeaths)
acf(TS)
pacf(TS)
TS这不是一个理想的解决方案,但是您可以通过定义plot.ACF()
来重新定义绘制ACF/PACF的含义
首先存储现有版本
old.plot.acf <- plot.acf
现在这是本地定义的,您可以根据需要设置mfrow
,进行打印,然后重置函数或将其从命名空间中清除
plot.acf <- old.plot.acf
plot.acf与我的另一个答案不同的方法:使用ggplot2
绘制acf
ggacf <- function(x, ci=0.95, type="correlation", xlab="Lag", ylab=NULL,
ylim=NULL, main=NULL, ci.col="blue", lag.max=NULL) {
x <- as.data.frame(x)
x.acf <- acf(x, plot=F, lag.max=lag.max, type=type)
ci.line <- qnorm((1 - ci) / 2) / sqrt(x.acf$n.used)
d.acf <- data.frame(lag=x.acf$lag, acf=x.acf$acf)
g <- ggplot(d.acf, aes(x=lag, y=acf)) +
geom_hline(yintercept=0) +
geom_segment(aes(xend=lag, yend=0)) +
geom_hline(yintercept=ci.line, color=ci.col, linetype="dashed") +
geom_hline(yintercept=-ci.line, color=ci.col, linetype="dashed") +
theme_bw() +
xlab("Lag") +
ggtitle(ifelse(is.null(main), "", main)) +
if (is.null(ylab))
ylab(ifelse(type=="partial", "PACF", "ACF"))
else
ylab(ylab)
g
}
然后你得到这个:
不幸的是,grid.arrange()
不适用于基本图形,因此建议使用ggplot2
。您可以使用性能分析软件包:
library(PerformanceAnalytics)
chart.ACFplus(TS)
巴普蒂斯特在以下链接中的回答非常有效。你也可以看看gridBase
包。你可以尝试使用facet_grid ggplot2,它给出如下输出:你可以在顶部有4个标签,在网格的右侧有ACF和PACF。你真的应该添加一些解释,解释为什么应该这样做工作-您还可以添加代码以及代码本身中的注释-在其当前形式中,它不提供任何解释,以帮助社区其他人理解您为解决/回答问题所做的工作。这对于较老的问题和已经有答案的问题尤为重要。PerformanceAnalytics::chart.ACFplus()
仅为单变量序列定义。如果您尝试从上面的原始问题绘制双变量,则仅绘制第一列。
library(ggplot2)
library(gridExtra)
grid.arrange(ggacf(lh), ggacf(lh, type="partial"), ncol=2)
library(PerformanceAnalytics)
chart.ACFplus(TS)