library(gridBase)
library(biwavelet)
library(grid)
library(ggplot2)
t <- c(1:(24*14))
P <- 24
A <- 10
y <- A*sin(2*pi*t/P)+20
t1 <- cbind(t, y)
wt.t1=wt(t1)
绘图功能
combine_base_grid <-
function(){
par(mfrow=c(2, 2))
plot(y,type = "l",xlab = "Time (hours)",ylab = "Amplitude",main = "Time series")
plot(wt.t1, plot.cb=FALSE, plot.phase=FALSE,main = "Continuous wavelet transform",
ylab = "Period (hours)",xlab = "Time (hours)")
spectrum(y,method = "ar",main = "Spectral density function",
xlab = "Frequency (cycles per hour)",ylab = "Spectrum")
## the last one is the current plot
plot.new() ## suggested by @Josh
vps <- baseViewports()
pushViewport(vps$figure) ## I am in the space of the autocorrelation plot
vp1 <-plotViewport(c(1.8,1,0,1)) ## create new vp with margins, you play with this values
acz <- acf(y, plot=F)
acd <- data.frame(lag=acz$lag, acf=acz$acf)
p <- ggplot(acd, aes(lag, acf)) + geom_area(fill="grey") +
geom_hline(yintercept=c(0.05, -0.05), linetype="dashed") +
theme_bw()+labs(title= "Autocorrelation\n")+
## some setting in the title to get something near to the other plots
theme(plot.title = element_text(size = rel(1.4),face ='bold'))
print(p,vp = vp1)
popViewport() ## THE FIX IS JUST THIS LINE
}
1 回答
我可以重现这个bug . 解决方案,将(推视口)
viewport
添加到vieport树以插入网格图 . 但它忘了删除它(pop视口) .添加行的内容将解决问题:
测试解决方案:
为了测试这个修复,我将绘图代码包装在一个函数中并重新生成它以生成多页pdf .
init变量
绘图功能
创建多页pdf