--原文链接--
在实际绘图时,如果涉及到多个图形的整合排版会涉及一个问题,图例如何进行整合。比如在4张图的排版,4张图使用的映射都是同一个变量,那么4张图的图例都是一样的,整合排版完4张图都带着各自的图例,但是我们想只显示一个图例,怎么实现呢?
如上图,四张图中每张图都带着图例,想把他们图例整合为一个显示在最上面,安排!
先把4张图画出来:
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data = dsamp, colour = clarity)+
guides(colour=guide_legend(nrow=1,byrow=T))+
theme(legend.position = "top")
p2 <- qplot(cut, price, data = dsamp, colour = clarity)+
guides(colour=guide_legend(nrow=1,byrow=T))+
theme(legend.position = "top")
p3 <- qplot(color, price, data = dsamp, colour = clarity)+
guides(colour=guide_legend(nrow=1,byrow=T))+
theme(legend.position = "top")
p4 <- qplot(depth, price, data = dsamp, colour = clarity)+
guides(colour=guide_legend(nrow=1,byrow=T))+
theme(legend.position = "top")
通常我们在整合图的时候用的比较多的是包gridExtra,此包比较暴力的把图给整合在了一起,要想实现我们的目的还是要温柔一点。
包lemon为我们提供了这样的方法
library(lemon)
grid_arrange_shared_legend(p1, p2, p3, p4, ncol = 2, nrow = 2,position='top')
现在4张图的图例整合在了最上面,是不是很方便,赶紧动手试一下。
精彩推荐:
R语言绘制散点图geom_point
R语言添加拟合曲线geom_smooth
R语言箱线图boxplot
R语言线图geom_line