对于此数据:

big = runif(60);mangum = runif(61:120)
df = data.frame(big, mangum)

我们可以绘制:

ccf(df$big, df$mangum) ## we see 2 horizontal dashed lines

现在我想通过ggplot2绘制,如何将两条水平虚线(它们确定哪些相关值是重要的)添加到ggplot2图中

    df_x <- eval(substitute(big), df)
    df_y <- eval(substitute(mangum), df)
    ccf.object <- ccf(df_x, df_y, plot = FALSE)
    output_table <- cbind(lag = ccf.object$lag, 
                x.corr = ccf.object$acf) %>%
    as_tibble() %>%      mutate(cat = ifelse(x.corr > 0, "green", "red"))
    output_table %>%    ggplot(aes(x = lag, y = x.corr)) +
    geom_bar(stat = "identity", aes(fill = cat))

推荐答案

如果查看stats:::plot.acf内部,您会看到这些行的默认公式基本上是c(-1, 1) * qnorm((1 + 0.95)/2)/sqrt(n.used),其中n.used是从ccf的输出中获得的.因此,要获得与ccf的输出匹配的ggplot,您可以执行以下操作:

output_table %>%    
  ggplot(aes(x = lag, y = x.corr)) +
  geom_col(aes(fill = paste0(cat, 3)), width = 0.4) +
  geom_hline(yintercept = c(-1, 1) * qnorm((1 + 0.95)/2)/sqrt(
    ccf(df$big, df$mangum, plot = FALSE)$n.used), 
    linetype = 2, color = 'blue') +
  geom_hline(yintercept = 0) +
  scale_fill_identity() +
  theme_classic(base_size = 14) +
  theme(axis.line = element_blank(),
        panel.border = element_rect(fill = NA, color = 'black'))

enter image description here

现在我们可以看到,这与基本R图给出的结果类似:

enter image description here

R相关问答推荐

将Multilinetring合并到一个线串中,使用sf生成规则间隔的点

变量计算按R中的行更改

从API中抓取R数据SON

使用tidyverse / Mutate的存款账户余额

多重RHS固定估计

selectInput不返回ALL,并将因子转换为shiny 的数字

使用Facet_WRAP时更改框图中线的 colored颜色

计算满足R中条件的连续列

使用rest从header(h2,h3,table)提取分层信息

R:从geom_ol()中删除轮廓并导出为pdf

用约翰逊分布进行均值比较

如何从容器函数中提取conf并添加到ggplot2中?

使用RSelenium在R中抓取Reddit时捕获多个标签

在多页PDF中以特定布局排列的绘图列表不起作用

在同一单元格中创建包含整数和百分比的交叉表

如果满足条件,则替换列的前一个值和后续值

排序R矩阵的行和列

根据用户输入更改标记大小和 colored颜色 (R)

如何在一个GGPLATE中绘制多个灰度平滑?

用LOOCV进行K近邻问题