/ / Dlaczego moja legenda ggplot2 jest nieprawidłowo zwymiarowana podczas korzystania z gridExtra? [r] - r, ggplot2, gridextra

Dlaczego moja legenda ggplot2 jest nieodpowiednio zwymiarowana podczas korzystania z gridExtra? [r] - r, ggplot2, gridextra

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:

wprowadź opis obrazu tutaj

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:

wprowadź opis obrazu tutaj

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 № 1

Myś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