前面我们学习了 patchwork 包排版 ggplot2 图形的简单入门,今天来学习下 patchwork 包的复杂排版。

1. 安装和加载包

install.packages("ggplot2") # 安装包install.packages("patchwork") # 安装包library(ggplot2) # 加载包library(patchwork) # 加载包

2. 绘制示例图形

绘制四个 ggplot2 示例图形用于演示排版。

p1 <- ggplot(mtcars, aes(x=mpg, y=wt)) +   geom_point() +ggtitle('图1')  p2 <- ggplot(mtcars, aes(x=mpg, y=disp, group = gear)) +   geom_boxplot() + ggtitle('图2')p3 <- ggplot(mtcars, aes(x=hp, y=wt, colour = mpg)) +   geom_point() + ggtitle('图3')p4 <- ggplot(mtcars, aes(x=gear)) +   geom_bar() + ggtitle('图4') +  facet_wrap(~cyl)

p1 + p2 + p3 + p4

3. 图形排版进阶

下面我们来学习下通过调整参数来进行复杂的排版。

patchwork包 中用来调整排版设置的函数有 plot_annotation()函数 ‍ 、 plot_layout() 函数、 plot_spacer() 函数 等,下面一个一个看。

3.1 plot_annotation() 函数

查看此函数帮助文件,可以看到这个函数主要的作用在于给组合图形添加标签和标题等。

下面来学习怎么使用这个函数。

函数使用比较简单,直接在组合图形后面使用+号连接该函数即可,代码如下:

p1 + p2 + p3 + p4 +   plot_annotation(tag_levels = "A",                  title = "组合图形排版",                  caption = "R语言统计与绘图 公众号")

如上图所示,可以使用 title、subtitle、caption 等参数来控制图形标题和副标题等。

使用 tag_levels 参数表示添加图形的标签,可以指定水平值为 a、A、1、i、I 等,分别表示小写字母、大写字母、数字、小写罗马数字、大写罗马数字等。

3.2 plot_layout() 函数排版

上面的 plot_annotation() 函数是用于添加组合图形的标签、标题等。

而 plot_layout() 函数可以用于组合图形的布局。

下面来学习怎么使用这个函数。

p1 + p2 + p3 + p4 +   plot_layout(ncol = 2, widths = c(1, 2))

如上所示,图形设置为两列,默认按行填充,两列之间 相对宽度比 为 1:2。

当然也可以设置 heights 参数为 相对高度比 1:2,代码如下。

p1 + p2 + p3 + p4 +   plot_layout(heights = c(1, 2))

除了使用 ncol、nrow、widths、heights 等参数来调整排版外,还可以使用 design 参数来排版图形,这个更加复杂,自定义程度也更高。

design 参数接受 文本字符串 来指定图形布局。

design1 <- "  122  1#3  443"p1 + p2 + p3 + p4 + plot_layout(design = design1)

上面的 design1 表示将图形画板创建为9宫格布局,图1为在第1和4格,图2在第2和3格,图3在第6和9格,图4在7和8格,第5格是空的,用#号表示。

除了设置排版布局外,还可以使用 guides 参数来设置图形的图例。

在4个示例数据集中,图3是有图例的,那就用图3来演示图例的设置。

p3 + p3

如上图所示,组合图形有两个图例,我们可以调整参数将其合并为1个图例。

设置参数 guides='collect' 即可。

p3 + p3 + plot_layout(guides='collect')

也可以设置参数调整图例的位置,比如说置于底部。

p3 + p3 + plot_layout(guides='collect') &  theme(legend.position='bottom')

3.3 plot_spacer() 函数排版

这个函数的目的就是在排版网格中创建一个空的透明色块,用来隔开其他图形。

下面来看看这个函数的使用。

首先先看下没有添加 plot_spacer() 函数的图形排版。

p1 + p2 + p3

添加 plot_spacer() 函数。

p1 + p2 + plot_spacer() + p3

如图所示,plot_spacer() 函数就是在前后图形中创建一个空的透明网格,可以提高自定义排版的自由度。

p1 + plot_spacer() + p2 + plot_spacer() + p3 + plot_spacer()

4. 调整图形主题

除了设置排版布局外,还可以设置图形主题。

比如说设置 theme_bw() 主题,直接在组合图形后面用 & 符号连接起来即可。

p1 + p2 + p3 + p4 & theme_bw()

好的,patchwork 包就学到这里,应该基本够用了。

对这个包有兴趣的读者可以点击 阅读原文 查看更复杂的自定义排版。

参考资料

  1. patchwork 包帮助文件

既往专辑

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

ggplot2 图形排版:patchwork 包复杂排版相关推荐

  1. R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果图像垂直堆叠排列进行组合构图(vertically stack the plots)

    R语言ggplot2可视化:使用patchwork包将两个ggplot2可视化结果图像垂直堆叠排列进行组合构图(vertically stack the plots) 目录

  2. R语言ggplot2可视化:patchwork包(直接使用加号+)将一个ggplot2可视化结果和一段文本内容横向组合起来形成最终结果图、使用wrap_elements函数将文本内容放置在组合组左边

    R语言ggplot2可视化:使用patchwork包(直接使用加号+)将一个ggplot2可视化结果和一段文本内容横向组合起来形成最终结果图.使用wrap_elements函数将文本内容放置在组合组左 ...

  3. R语言ggplot2可视化:patchwork包将一个ggplot2可视化结果和一个plot函数可视化结果横向组合起来形成最终结果图、两个可视化的组合结果对齐、并为组合图像的每个子图添加标题

    R语言ggplot2可视化:使用patchwork包(直接使用加号+)将一个ggplot2可视化结果和一个plot函数可视化结果横向组合起来形成最终结果图.将两个可视化的组合结果对齐.并为组合图像的每 ...

  4. ggplot2 图形排版:patchwork 包简单入门

    在前面我们学习了基础绘图系统和 ggplot2 绘图系统的图形排版组合,具体可见下面推文. 1. 基础绘图系统组合图形排版 2. ggplot2绘图系统图形排版 今天我们继续来学习下 patchwor ...

  5. ggplot2图形排版:patchwork包简单入门

    看下patchwork包介绍:主要供ggplot2用户使用,无论组合图形多么复杂,确保ggplot图形对齐. install.packages("patchwork") insta ...

  6. AE PR模板基本图形预设素材包动态字幕文字标题排版动画预设效果

    AE PR模板基本图形预设素材包动态字幕文字标题排版动画预设效果 素材名称:AE模板+PR预设文字标题排版字幕动画 素材数量:AE890组+PR940组   PR不支持改字体  AE支持改字体 使用软 ...

  7. R语言ggplot2可视化:使用patchwork包绘制ggplot2可视化结果的组合图(自定义图像的嵌入关系)、使用patchwork包绘制ggplot2可视化结果的组合图(自定义组合形式)

    R语言ggplot2可视化:使用patchwork包绘制ggplot2可视化结果的组合图(自定义图像的嵌入关系).使用patchwork包绘制ggplot2可视化结果的组合图(自定义组合形式) 目录

  8. R语言ggplot2可视化使用ggplot2包patchwork包在可视化结果(右上角)中插入logo图片

    R语言ggplot2可视化使用ggplot2包patchwork包在可视化结果(右上角)中插入logo图片 目录

  9. R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例、使用patchwork包实现综合图例

    R语言ggplot2可视化为组合图添加综合图例实战:使用ggpubr包ggarrange函数实现综合图例.使用patchwork包实现综合图例 目录

最新文章

  1. VTK修炼之道55:图形基本操作进阶_表面重建技术(等值面提取)
  2. 定位到某个单词_【侃侃单词】词根词缀记单词-loc
  3. 201671010439-词频统计软件项目报告
  4. VS2010打开就自动关闭问题解决
  5. 易语言精益模块json_精易模块|精易模块下载 v3.46 官方免费版_最火软件站
  6. w10连接远程计算机控制,win10系统教你如何远程控制他人电脑的方法
  7. 十三、直接、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址
  8. 电脑系统里如何设置dns服务器
  9. Android 软件行为监控系统 的原理 主要是利用binder机制原理添加一个filter
  10. 这几种神级性能优化手段,你用过几个?
  11. AngularJs - Javascript MVC 框架
  12. 【资源】重磅!清华大学网上课程面向全国免费开放!无需登录、注册!在家上清华!...
  13. ubuntu下查看电脑系统信息
  14. Win7电脑CPU占用过高怎么办?
  15. 融汇悦生活赴港递交招股书:母公司依赖症难解,独立性存疑
  16. HTML5期末考核大作业:基于Html+Css+javascript的网页制作(化妆品公司网站制作)...
  17. 【深度学习入门】——亲手实现图像卷积操作
  18. 使用PageHelper实现分页
  19. Creating Shazam in Java
  20. 【亲测有效】Centos安装完成docker后启动docker报错docker: unrecognized service的两种解决方案...

热门文章

  1. 40张图看懂分布式追踪系统原理及实践
  2. 学了那么多年设计模式依然不会用!那可真蠢!
  3. Scrum 工件: 速度图和燃尽图
  4. 阿里巴巴是如何招人的,如何招到合适的人?
  5. 有哪些好用的远程办公软件推荐?
  6. 换个角度聊系统稳定性建设(2021版)
  7. HTML的标签描述17
  8. C++算术运算符与算术表达式
  9. 类加载器的分类及关系
  10. 如何调用形参数组_函数的参数