Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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 |组合内部使用par(mfrow=…)的绘图_R_Graphics_Par - Fatal编程技术网

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)