Organizuję kilka działek punktowych z gridExtra. Podczas rysowania pojedynczego wykresu legenda jest odpowiednio zwymiarowana i we właściwej lokalizacji. To wygląda tak:
Mój problem występuje, gdy używam gridExtra "s grid.arrange()
narysować kilka w siatce. Legendy nie są zmieniane wraz z pozostałymi działkami i wyglądają tak:
Oto kod dla wykresu i linii do utworzenia siatki:
b2 <- ggplot(y2, aes(Rain_discrete, Cum_stress))+
geom_point(aes(color = Planting), size = 2.25)+
guides(colour = guide_legend(direction = "vertical",
title.position = "top", title = NULL,
label.theme = element_text(size = 8, angle = 0)))+
theme(legend.justification=c(1,1),
legend.position=c(1,1),
legend.margin = margin(1,1,1,1),
plot.title = element_text(size = 9, angle = 0),
plot.margin = margin(2,1,4,1),
axis.title.x = element_text(size = 8, angle = 0),
axis.title.y = element_text(size = 8, angle = 90),
axis.text.x = element_text(size = 8, angle = 0),
axis.text.y = element_text(size = 8, angle = 0))+
coord_cartesian(xlim = c(0, 85), ylim = c(-30,420))+
xlab("Discrete Rain")+
ylab("Cumulative Stress")+
ggtitle("2002")
grid.arrange(b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13)
Zmanipulowałem charakterystykę legendy poprzez upuszczenie label.theme = element_text(size = 8, angle = 0)
z prowadnicowej części działki. Moją logiką jest to, że bezpośrednie określenie rozmiaru tekstu uniemożliwiło odpowiednią zmianę rozmiaru działek. To nie zadziałało. Nie mogę dokładnie wskazać problemu.
Dlaczego legendy nie są odpowiednio zmieniane przy użyciu gridExtra()
? Próbuję ustrukturyzować kod ggplot2 w taki sposób, aby zmusić legendy do pozostania na miejscu i być skalowane proporcjonalnie podczas używania gridExtra()
.
Dziękuję za radę.
Odpowiedzi:
1 dla odpowiedzi № 1Myślę, że rozmiar czcionki jest problemem. Czy próbowałeś zmniejszyć rozmiar "globalnie" obrazu? Lubić
ggplot(y2, aes(Rain_discrete, Cum_stress))+
geom_point(aes(color = Planting), size = 2.25)+
guides(colour = guide_legend(direction = "vertical",
title.position = "top", title = NULL,
label.theme = element_text(size = 8, angle = 0))) +
theme_grey(6) +
theme(legend.justification=c(1,1),
legend.position=c(1,1),
legend.margin = margin(1,1,1,1),
plot.margin = margin(2,1,4,1))+
coord_cartesian(xlim = c(0, 85), ylim = c(-30,420))+
xlab("Discrete Rain")+
ylab("Cumulative Stress")+
ggtitle("2002")
Lub przez zmianę rozmiaru elementu legendy dodatkowo?
theme(legend.key.size=unit(1,"mm"),
legend.text=element_text(size=6),
legend.title=element_text(size=7))
-1 dla odpowiedzi № 2
Nie wiem, dlaczego tak się dzieje, ale możesz spróbować cowplot
pakiet do wykreślenia tak samo jak alternatywa. https://cran.r-project.org/web/packages/cowplot/vignettes/introduction.html