Ich möchte eine Figur generieren, die eine Kombination aus Basis- und ggplot-Grafiken enthält. Der folgende Code zeigt meine Figur unter Verwendung der Basisplotfunktionen von 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)")
Welches erzeugt
Die meisten dieser Panels scheinen für mich ausreichend zu sein, um sie in meinen Bericht aufzunehmen. Das Diagramm, das die Autokorrelation zeigt, muss jedoch verbessert werden. Mit ggplot sieht das viel besser aus:
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()
Da ggplot jedoch keine Basisgrafik ist, können wir ggplot nicht mit layout oder par (mfrow) kombinieren. Wie kann ich das aus den Basisgrafiken generierte Autokorrelationsdiagramm durch das von ggplot generierte ersetzen? Ich weiß, dass ich grid.arrange verwenden kann, wenn alle meine Figuren mit ggplot erstellt wurden. Wie mache ich das, wenn nur eines der Diagramme in ggplot generiert wird?
polygon
mit der Ausgabe vonacf()
ein Basisgrafikdiagramm zu erstellen, das demjenigen ähneltggplot
.