ho generato una figura che combina ggplot e basi grafici:fanno pannelli con stessi margini quando combinano grafici ggplot e basi
t <- c(1:(24*14))
P <- 24
A <- 10
y <- A*sin(2*pi*t/P)+20
#*****************************************************************************
par(mfrow = c(2,1))
plot(y,type = "l",xlab = "Time (hours)",ylab = "Amplitude")
aa <- par("mai")
plot.new()
require(gridBase)
vps <- baseViewports()
pushViewport(vps$figure)
pushViewport(plotViewport(margins = aa)) ## I use 'aa' to set the margins
#*******************************************************************************
require(ggplot2)
acz <- acf(y, plot = FALSE)
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()
grid.draw(ggplotGrob(p)) ## draw the figure
uso il comando plotViewport e impostare le dimensioni del pannello secondo le dimensioni il primo pannello, ottenuto con il par ("mai"). La figura allegata mostra il risultato. Tuttavia, le dimensioni di entrambi i pannelli non corrispondono, vale a dire il secondo pannello sembra essere leggermente più largo del primo. Come posso superare questo senza dover impostare manualmente i margini con
pushViewport(plotViewport(c(4,1.2,0,1.2)))
Questo è già abbastanza difficile con un solo sistema grafico, figuriamoci due. C'era un pacchetto 'ggextra' con una funzione' align.plots', ma questo è stato deprecato. Vedi https://groups.google.com/forum/?fromgroups=#!topic/ggplot2-dev/4dKg-qA7eZE – Andrie