这是受此启发的解决方案question https://stackoverflow.com/questions/11883844/inserting-a-table-under-the-legend-in-a-ggplot2-histogram
首先,新建变量colvec2
只包含一次所有颜色。
colvec2 <-c("white", "gray80", "gray60", "gray37", "black")
colvec <-c("white", "white","gray80", "gray80", "gray60", "gray60", "gray37", "gray37","black", "black")
原始图另存为对象且没有图例。
p<-ggplot(water, aes(Date, Temp, group=Wetland, shape=Hydrology)) +
geom_point(aes(color=Wetland),size=3) +
scale_colour_manual(values=colvec) +
facet_grid(Layer ~ Hydrology) +
theme(legend.position="none")
仅包含数据的图Pulsed
. Set shape=16
在 - 的里面geom_point()
. With scale_colour_manual()
更改了图例标题和颜色。
p1<-ggplot(subset(water,Hydrology=="Pulsed"),
aes(Date, Temp, group=Wetland, shape=Hydrology)) +
geom_point(aes(color=Wetland),size=3,shape=16) +
scale_colour_manual("Pulsed Wetlands",values=colvec2) +
facet_grid(Layer ~ Hydrology)
与p1
, 仅适用于Static
.
p2<-ggplot(subset(water,Hydrology=="Static"),
aes(Date, Temp, group=Wetland, shape=Hydrology)) +
geom_point(aes(color=Wetland),size=3,shape=17) +
scale_colour_manual("Static Wetlands",values=colvec2) +
facet_grid(Layer ~ Hydrology)
保存绘图p1
and p2
using ggplot_build()
and ggplot_gtable()
.
pt1<-ggplot_gtable(ggplot_build(p1))
pt2<-ggplot_gtable(ggplot_build(p2))
只提取两个图的一些图例。这次的图例在 12.element(元素包含guide-box
)
leg1<-pt1$grobs[[12]]
leg2<-pt2$grobs[[12]]
Now use grid.arrange()
and arrangeGrob()
绘制所有部分。
library(gridExtra)
grid.arrange(arrangeGrob(p,arrangeGrob(leg1,leg2), ncol = 2,widths=c(3/4,1/4)))