base グラフィックと 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 をレイアウトまたは par(mfrow) と組み合わせることはできません。ベースグラフィックスから生成された自己相関プロットをggplotによって生成されたものに置き換えるにはどうすればよいですか? すべての図が ggplot で作成されている場合、 grid.arrange を使用できることはわかっていますが、ggplot で生成されたプロットが 1 つだけの場合、どうすればよいですか?