ggplot2中实现多个绘图在一张画布中组合

 

001、生成几个测试数据

library(ggplot2)
library(dplyr)

p1 <- ggplot(mpg) + 
  geom_point(aes(x = displ, y = hwy)) + ggtitle("P1")    ## 测试图p1
p2 <- ggplot(mpg) + 
  geom_bar(aes(x = as.character(year), fill = drv), position = "dodge") +
  ggtitle("P2")                                          ## 测试图p2
p3 <- ggplot(mpg) + 
  geom_density(aes(x = hwy, fill = drv), colour = NA) + 
  facet_grid(rows = vars(drv)) + ggtitle("P3")           ## 测试图p3
p4 <- ggplot(mpg) + 
  stat_summary(aes(x = drv, y = hwy, fill = drv), geom = "col", fun.data = mean_se) +
  stat_summary(aes(x = drv, y = hwy), geom = "errorbar", fun.data = mean_se, width = 0.5) +
  ggtitle("P4")                                          ## 测试图p3

 

002、利用 patchwork 包进行图片组合

library(patchwork)          ## 加载包

 

p1 + p2                    ## p1 + p2组合

 

 

p1 + p4                    ## p1 + p4组合

 

 

p4 + p1             ## p4 + p1组合

 

 

p1 + p2 + p3          ## p1 + p2 + p3 组合

 

 

p1 + p2 + p3 + p4               ## 四图组合

 

003、plot_layout(ncol = 1)选项控制列数

a、控制列数为1

p1 + p2 + p3 + plot_layout(ncol = 1)      ## 列数为1

 

 

b、控制列数为2

p1 + p2 + p3 + plot_layout(ncol = 2)      ## 控制列数为2

 

 

c、控制列数为3

p1 + p2 + p3 + plot_layout(ncol = 3)          ## 控制列数为3

 

004、操作符\ 和 | 的使用

/表示垂直排列:

p1 / p2          ## 表示垂直排列 

 

 

|表示水平排列:

p1 | p2                         ## 水平排列

 

 

\和|组合使用:

p1 | p2/p3                 ## 组合使用

 

 

\和|组合使用:

p1 / p2 | p4           ## 组合使用

 

 

\和|组合使用:

p1|(p2/(p3|p4))        ## 组合使用

 

005、复杂组合

layout <- "           ## plot_layout设置复杂组合,1、2、3表示第几张图,#号表示空出
112
3#2
344
"
p1 + p2 + p3 + p4 + plot_layout(design = layout)       ## 绘图

绘图结果:

 

 

006、实现仅保留一个图例

p1 + p2 + p3 + plot_layout(ncol = 2, guides = "collect")##guides="collect"实现仅保留一个图例

 

007、将图例放在空余的地方

p1+p2+p3+guide_area()+plot_layout(ncol=2,guides="collect")## guide_area()函数实现

 

008、对子图进行修改

a、将p1和p2组合

p12 <- p1 + p2
p12

 

 

b、修改子图

p12[[2]] <- p12[[2]] + theme_light()      ## 修改子图
p12

 

 

009、对所有子图进行修改

a、原图

p1 + p4    ## 直接组合

 

 

b、对所有子图进行修改

p1 + p4 & theme_light()     ## 对所有子图进行修改

 

 

 010、对所有子图进行修改,将y轴量程设为一致

a、直接组合

p1 + p4

 

 

b、同时对y轴的量程进行设置

p1 + p4 & scale_y_continuous(limits = c(0, 45))  ## 同时对组合图的y轴量程进行设置

 

 

011、增加注释

p34 <- p3 + p4 + plot_annotation(
  title = "A closer look at the effect of drive train in cars",  #增加标题
  caption = "Source: mpg dataset in ggplot2"  #增加图片说明
)
p34

 

 

012、给图片添加编号

a、罗马数字编号

p123 <- p1 | (p2 / p3)                        ## 生成组合图
p123 + plot_annotation(tag_levels = "I")      ## 使用罗马序号编号

 

 

b、小写字母编号

p123 <- p1 | (p2 / p3)                        ## 图片组合
p123 + plot_annotation(tag_levels = "a")      ## 字母编号

 

 

c、大写字母编号

p123 <- p1 | (p2 / p3)
p123 + plot_annotation(tag_levels = "A")      ## 大写字母编号

 

来源:https://blog.csdn.net/weixin_45052363/article/details/124051895

 

posted @ 2023-03-24 11:55  小鲨鱼2018  阅读(1600)  评论(0编辑  收藏  举报