Как добавить легенду внизу всего макета? - PullRequest
0 голосов
/ 06 марта 2020

Я создал макет и добавил легенду в конце последнего графика 4, см. Код ниже (я удалил коды ploe 2 и plot 3, так как они похожи на график 1). Но последний график графика 4 станет не в форме, если я сделаю это См. Рисунок . Как добавить легенду внизу всего макета с изображениями четного размера?

library(foreign)
library(ggplot2)
library(dplyr)
library(readxl)
library(scales)
library(tidyverse)
Sys.setlocale("LC_TIME", "English")
X0_40cm <- read_excel("C:/Users/Connie/Desktop/LAI/Wheat_F_2018.xlsx")
plot1 <- ggplot(X0_40cm, aes(Date,LAI,group=1))+
  geom_point(data=subset(X0_40cm, Condition=="Measured"),col="blue")+
  geom_line(data=subset(X0_40cm, Condition=="Simulated"),col="black")+
  scale_y_continuous(limits = c(0,3)) +
  labs(title="Winter wheat of F plot in 2018",y="LAI",x="Date")+
  theme_update(plot.title=element_text(hjust=0.5))
plot1

X200cm <- read_excel("C:/Users/Connie/Desktop/LAI/Maize_F_2019.xlsx")
plot4 <- ggplot(mapping = aes(Date, LAI, color = Condition, linetype = Condition, shape = Condition))+
  geom_point(data=subset(X200cm, Condition=="Measured"))+
  geom_line(data=subset(X200cm, Condition=="Simulated"))+
  scale_color_manual(values = c("blue", "black")) +
  scale_linetype_manual(values=c(NA,1)) +
  scale_shape_manual(values=c(19,NA)) +
  theme(legend.position="bottom",legend.key.size=unit(0.1,'cm'),legend.key.width=unit(0.5,'cm'),legend.title=element_blank())+
  scale_y_continuous(limits = c(0,8)) +
  labs(title="Summer maize of F plot in 2019",y="LAI",x="Date")
theme_update(plot.title=element_text(hjust=0.5))
plot4

library(grid)
grid.newpage()
pushViewport(viewport(layout=grid.layout(4,1)))
print(plot1, vp=viewport(layout.pos.row = 1, layout.pos.col = 1))
print(plot2, vp=viewport(layout.pos.row = 2, layout.pos.col = 1))
print(plot3, vp=viewport(layout.pos.row = 3, layout.pos.col = 1))
print(plot4, vp=viewport(layout.pos.row = 4, layout.pos.col = 1))
dev.new()

enter image description here

1 Ответ

2 голосов
/ 07 марта 2020

grid_arrange_shared_legend() из пакета lemon должно это сделать

library(ggplot2)
# install.packages("lemon")
library(lemon)

dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data = dsamp, colour = clarity)
p2 <- qplot(cut, price, data = dsamp, colour = clarity)
p3 <- qplot(color, price, data = dsamp, colour = clarity)
p4 <- qplot(depth, price, data = dsamp, colour = clarity)

grid_arrange_shared_legend(p1, p2, p3, p4, 
                           ncol = 1, 
                           nrow = 4, 
                           position = 'bottom')

Создано в 2020-03-06 представительный пакет (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...