作者:小橙子
来源:小橙子学数据分析
今天要给大家介绍的是cowplot包(作者:Claus O. Wilke),针对ggplot2的功能扩展包。能把多个ggplot2的图,组合起来
比如利用cowplot包,把"mpg"的车辆信息,根据"整体"与"drv",按照"总-分"的逻辑,显示在同一张图中:
1library(ggplot2)
2library(cowplot) #奶牛画图包
3library(ggthemes) #ggplot中的主题包,囊括了很多经典图表形式,比如经济学人、538、华尔街等等
4
5p <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl)))+geom_point() + theme_economist() #利用了经济学人的主题
6q <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl)))+geom_point() + facet_grid(drv ~ .) + theme_economist()
7
8plot_grid(p, q,labels= c('A', 'B'), label_size = 12,label_colour = ("blue"))
组合的形式,同时也支持"纵向"排列
1plot_grid(p, q,labels= c('A', 'B'), label_size = 12,label_colour = ("blue"), align = "v",ncol = 1)
同时也支持"3个图"的组合形式
1library(ggplot2)
2library(cowplot)
3library(ggthemes)
4
5p <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl)))+geom_point() +
6 theme_economist(base_family = "myfonts")
7q <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl)))+geom_point() +
8 facet_grid(drv ~ .) + theme_economist(base_family = "myfonts")
9r <- ggplot(mpg, aes(x = cty) )+geom_bar(fill = "skyblue")+ theme_economist()
10
11bottom_row <- plot_grid(p, q,labels= c('A', 'B'), label_size = 12,label_colour = ("blue"), align = "h")
12plot_grid(r, bottom_row, labels = c('A', ''), ncol = 1, rel_heights = c(1, 1.2),label_colour = ("blue"))
同时也支持"子图"的组合形式
1library(viridis)
2ggdraw() +
3 draw_plot(p + theme(legend.justification = "bottom"), 0, 0, 1, 1) +
4 draw_plot(r + scale_color_viridis(discrete = TRUE) +
5 theme(legend.justification = "top"), 0.5, 0.1, 0.5, 0.4) +
6 draw_plot_label(c("A", "B"), c(0, 0.55), c(1, 0.5), size = 15)
cowplot也支持"水印"功能
1ggdraw(r) +
2 draw_plot_label("A", size = 14) +
3 draw_label("小橙子学数据分析", angle = 45, size = 60, alpha = .2)
cowplot也支持"图与背景的重叠"功能
1library(magick)
2p <- ggplot(mpg, aes(x=hwy, group = cyl , fill = factor(cyl) )) + geom_density(alpha = 0.5)
3ggdraw() +
4 draw_image("https://jeroen.github.io/images/frink.png") +
5 draw_plot(p)
总结
当需要组合图片的时候,cowplot是个很好的工具。可以实现各种形式的图形组合。
感谢Claus O. Wilke对R的贡献
——————————————
往期精彩: