我有一个时间序列数据帧。我有两个连续的变量,需要为其绘制自相关(acf)函数。我正在尝试使用plot_grid()
来确保在一个窗口中显示两个图,但这并没有发生。这是示例:
#df is dataframe; col1 and col2 are continuous variables
p1 <- acf(df$col1,lag.max = 5 ,plot = TRUE)
p2 <- acf(df$col2,lag.max = 5 ,plot = TRUE)
plot_grid(p1, p2, nrow = 2,ncol =1,rel_heights = c(2/1,2/1),rel_widths = c(2/2,2/2))
f <- structure(list(Date = structure(c(1505779200, 1505779500, 1505779800,
1505780100), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
A = c(212.429693925327, 211.464088210329, 211.653306685973,
210.981936189015), B= c(75.9448191760481, 76.2501222022257,
76.1316674891558, 76.8299563088116)), row.names = c(NA, 4L
), class = "data.frame")
p1 <- acf(f$A, lag.max = 5, plot = FALSE)
p2 <- acf(f$B, lag.max = 5, plot = FALSE)
cowplot::plot_grid(autoplot(p1), autoplot(p2), nrow = 2)
答案 0 :(得分:1)
plot_grid
来自cowplot
包(我认为),并且可用于基于网格的图形对象(即ggplot2
/ lattice
的输出)。 acf()
使用基本图形。使用par(mfrow ...)
的东西应该可以正常工作,例如:
orig_pars <- par(mfrow=c(1,2))
acf(df$col1,lag.max = 5 ,plot = TRUE)
acf(df$col2,lag.max = 5 ,plot = TRUE)
pars(orig_pars) ## reset
或者您可以
ggacf
或同等语言的acf()
对象中提取数据,并使用点阵/ ggplot创建自己的图答案 1 :(得分:0)
基于网格的解决方案可能是
Python
如果要在图中添加标题或标签,可以执行以下操作:
library(ggfortify)
p1 <- acf(my_df$A, lag.max = 5, plot = FALSE)
p2 <- acf(my_df$B, lag.max = 5, plot = FALSE)
cowplot::plot_grid(autoplot(p1), autoplot(p2), nrow = 2)
数据
cowplot::plot_grid(autoplot(p1) + ggtitle("A"), autoplot(p2) + ggtitle("B"), nrow = 2)
# "AUTO" adds captial letters A, B, ... to the plots, but
# you can also specify your own labels as a vector
cowplot::plot_grid(autoplot(p1), autoplot(p2), nrow = 2, labels = "AUTO")
答案 2 :(得分:0)