Wykonuję analizę eksploracyjną moich danych i potrzebuję wykreślić wiele grafik używając ggplot. Ilość grafiki jest naprawdę ogromna (206 stacji) i chciałem ją wykreślić w 1 kolumnie, a 8 wierszy na stronie, na tak wielu stronach. Zdaję sobie sprawę z funkcji takich jak viewport lub grid.arrange, ale nie jestem w stanie zmusić ich do pracy w tym przypadku. Zauważyłem już, że layout() ani par (mfrow = c (8,1)) nie działają z ggplot, ale wysyłam część kodu, w której utknąłem poniżej. Każda pomoc będzie doceniona!Wiele wykresów na wielu stronach przy użyciu ggplot
pdf('test.pdf', width=21, height=27)
par(mfrow=c(8,1))
for(i in levels(tab$Station))
{
print(ggplot(tab[tab$Station==i], aes(x=Date)) +
geom_line(aes(y=Tmin), col="blue", size=0.1) +
geom_line(aes(y=Tmax), col="red", size=0.1) +
geom_text(aes(x=as.Date('2010-01-01'), y=45), label=i) +
ylim(0, 45) +
scale_x_date(labels = date_format("%Y")) +
theme_bw() +
theme(
plot.background = element_blank()
,panel.grid.major = element_blank()
,panel.grid.minor = element_blank()
,panel.border = element_rect(color = 'black')
,panel.background = element_blank()
)
)
}
dev.off()
Witaj Jose, czy mógłbyś uczynić to powtarzalnym przykładem? To zwykle oznacza dostarczanie danych o zabawkach, abyśmy mogli po prostu pobrać kod i uruchomić go. Najczęściej ludzie używają do tego funkcji 'data()'. Na przykład 'dane (mtcars)' ładuje 'mtcars' data.frame do pamięci. – Statwonk
Czy odpowiedź @baptiste działa? –
Wiem, że to stare pytanie - ale spróbuj użyć funkcji facet_wrap_paginate w pakiecie ggforce. Zobacz pomoc tutaj https://cran.r-project.org/web/packages/ggforce/ggforce.pdf w ten sposób rozwiązałem mój podobny problem. –