Объедините базовую графику и графику ggplot в окне R figure

Я хотел бы создать фигуру, которая имеет комбинацию базовой графики и графики ggplot. Следующий код показывает мою фигуру, используя базовые функции построения графиков R:

t <- c(1:(24*14)) 
P <- 24 
A <- 10 
y <- A*sin(2*pi*t/P)+20

par(mfrow=c(2,2))
plot(y,type = "l",xlab = "Time (hours)",ylab = "Amplitude",main = "Time series")
acf(y,main = "Autocorrelation",xlab = "Lag (hours)", ylab = "ACF")
spectrum(y,method = "ar",main = "Spectral density function", 
         xlab = "Frequency (cycles per hour)",ylab = "Spectrum")
require(biwavelet)
t1 <- cbind(t, y)
wt.t1=wt(t1)
plot(wt.t1, plot.cb=FALSE, plot.phase=FALSE,main = "Continuous wavelet transform",
     ylab = "Period (hours)",xlab = "Time (hours)")

Который генерирует

Большинство этих панелей выглядят достаточными для включения в мой отчет. Однако график, показывающий автокорреляцию, нуждается в улучшении. Это выглядит намного лучше при использовании ggplot:

require(ggplot2)
acz <- acf(y, plot=F)
acd <- data.frame(lag=acz$lag, acf=acz$acf)
ggplot(acd, aes(lag, acf)) + geom_area(fill="grey") +
  geom_hline(yintercept=c(0.05, -0.05), linetype="dashed") +
  theme_bw()

Однако, поскольку ggplot не является базовым графиком, мы не можем объединить ggplot с layout или par (mfrow). Как я могу заменить график автокорреляции, сгенерированный из базовой графики, на график, сгенерированный ggplot? Я знаю, что могу использовать grid.arrange, если все мои фигуры были сделаны с помощью ggplot, но как мне это сделать, если в ggplot генерируется только один из графиков?

Ответы на вопрос(4)

Ваш ответ на вопрос