R包:‘patchwork合并多个R图的包‘

news2024/11/15 23:25:41

介绍

patchwork是基于gglot2的拼图包,它使得基于ggplot2的图形更容易拼接在同一个图层。

安装

因为作者仅仅在GitHub发布了patchwork,因此无法使用install.packages("patchwork")从CRAN处获取。为了获取该包,首先应该安装devtools包,其次在使用如下命令:

# install.packages("devtools")
library(devtools)
install_github("thomasp85/patchwork")

加载数据

使用R自带的mtcars数据,先使用ggplot2作图:

library(ggplot2)
library(patchwork)

p1 <- ggplot(mtcars, aes(x=mpg, y=disp))+ geom_point()
p2 <- ggplot(mtcars, aes(x=gear, y=disp, group = gear))+ geom_boxplot()
p3 <- ggplot(mtcars, aes(x=disp, y=qsec))+ geom_smooth()
p4 <- ggplot(mtcars, aes(x=carb))+ geom_bar()

+ 叠加图

p1 + p2 + p3 + p4
# (p1 + p2 + p3 + p4)+ plot_layout(ncol =1) # plot_layout 控制拼图水平布局

- 子轨道

# - 符号左右图形位于不同图层 
(p1 + p2 + p3) - p4 # (p1 + p2 + p3) 和p4分别占用两个相同大小的轨道
#(p1 + p2 + p3) - p4 + plot_layout(ncol=1) # 控制列数

| 水平布局

(p1 | p2 | p3 | p4) # 四个图分布在四个不同的图层
#(p1 + p2 + p3 + p4) # 四个图分布在同一个图层,且自动分成两列,每列2个图

**/**垂直布局

(p1 | p2)/(p3 | p4) # 括号内是水平布局,/则是垂直布局,和p1+p2+p3+p4类似

*& 同一操作应用所有图形

(p1 + (p2 + p3) + p4 + plot_layout(ncol = 1)) * theme_bw() # 只会应用到当前嵌套层 p1 p4

(p1 + (p2 + p3) + p4 + plot_layout(ncol = 1)) & theme_bw() # 所有图形

{} 或者 () 嵌套布局图形

p1 + {
  p2 + {
    p3 +
      p4 +
      plot_layout(ncol=1)
  }
} + 
  plot_layout(ncol=1)


p1 + (
  p2 + (
    p3 + p4 + plot_layout(ncol=1)
  )
) + 
  plot_layout(ncol=1)

plot_layout 调节拼接细节

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

plot_spacer 添加空白

p1 + plot_spacer() + p2

plot_annotation 设置title,subtitles 和 captions

patchwork <- (p1 + p2) / p3 # patchwork[[1]] = p1 + p2 图层1;patchwork[[1]] = p3
patchwork + plot_annotation(
  title = 'The surprising truth about mtcars',
  subtitle = 'These 3 plots will reveal yet-untold secrets about our beloved data-set',
  caption = 'Disclaimer: None of these plots are insightful',
  tag_levels = 'A' # 添加标签
) & theme(plot.tag = element_text(size = 8))

# 对图层1两子图编码 A1 和 A2
patchwork[[1]] <- patchwork[[1]] + plot_layout(tag_level = 'new')
patchwork + plot_annotation(tag_levels = c('A', '1'))

# 对图注进行编码 Fig.A.1: Fig.A.2: Fig.B:
patchwork + plot_annotation(tag_levels = c('A', '1'), tag_prefix = 'Fig. ',
                            tag_sep = '.', tag_suffix = ':')

控制legend

p1 <- ggplot(mtcars, aes(x=mpg, y=disp, colour = mpg, size = wt))+ 
  geom_point()
p2 <- ggplot(mtcars %>% mutate(gear=factor(gear)), aes(x=gear, y=disp, group = gear, color = gear))+
  geom_boxplot()
# 指定guides='collect',把legend都给集中在图的一侧
# guide_area() 图例单独放在一个格子
(p3 | (p1 / p2)) + 
	plot_layout(guides = 'collect') +  
  guide_area() 

总结

cowplot包相比,patchwork包更适合基于ggplot2的产生的图形,它的布局更加简洁,语法简单

参考

  1. patchwork
  2. patchwork拼图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1909637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十进制与十六进制,和二进制的相互转变

十六进制与十进制 十六进制&#xff08;Hexadecimal&#xff09;是一种进位制&#xff0c;基数为16&#xff0c;常用于计算机科学和电子工程中。十六进制使用16个符号来表示数值&#xff1a;0-9表示0到9&#xff0c;A-F表示10到15。十六进制的每一位可以表示4位二进制数&#…

万界星空科技MES:磷酸铁锂正极新材料生产管理系统

磷酸铁锂MES通过对生产现场的数据进行实时采集、处理和监控&#xff0c;实现对生产过程的优化和控制。它可以实时监控生产设备的运行状态、物料的使用情况、产品的生产进度等信息&#xff0c;并根据这些信息对生产过程进行调整和优化。例如&#xff0c;当发现某个生产设备的故障…

电脑桌面日历记事本怎么弄 好用的桌面日历记事本

在这个数字化的时代&#xff0c;电脑已成为我们日常生活中不可或缺的伙伴。我常常在电脑上记录各种事项&#xff0c;以便随时查看和提醒自己。而我最钟爱的记事方式&#xff0c;莫过于使用桌面日历记事本。 想象一下&#xff0c;你的电脑桌面上有一个直观的日历&#xff0c;每…

【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch

开源搜索技术的演进与选择&#xff1a;Elasticsearch 与 OpenSearch 1.历史发展2.OpenSearch 与 Elasticsearch 相同点3.OpenSearch 与 Elasticsearch 不同点3.1 版本大不同3.2 许可证不同3.3 社区不同3.4 功能不同3.5 安全性不同3.6 性能不同3.7 价格不同3.8 两者可相互导入 4…

【大模型】提示工程基础学习

目录 1. 零样本提示2. 少样本提示3. 链式思考提示&#xff08;CoT&#xff09;4. 自我一致性5. 生成知识提示6. 链式提示7. 思维树&#xff08;ToT&#xff09;8. 检索增强生成&#xff08;RAG&#xff09;9. active prompt10. 自我反思&#xff08;reflexion&#xff09;11. 多…

儿童网络守护计划:如何为孩子营造一个纯净的在线空间?

青少年不想被监视&#xff0c;但他们需要受到保护&#xff0c;免受互联网危险。我们告诉您如何与您的孩子建立信任&#xff0c;同时了解他们在网上面临的挑战。 对于今天的孩子来说&#xff0c;将离线和在线朋友分开是不可能的。青少年在任何时候都与一切事物和每个人联系在一起…

2024年道路运输企业主要负责人证考试题库及道路运输企业主要负责人试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年道路运输企业主要负责人证考试题库及道路运输企业主要负责人试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人…

MFC引用C#生成的dll,将dll放置到非exe程序目录,如何操作?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

【Linux进阶】vim的用法

1.什么是vi/vim? 简单来说&#xff0c;vi是老式的文本编辑器&#xff0c;不过功能已经很齐全了&#xff0c;但是还是有可以进步的地方。vim则可以说是程序开发者的一项很好用的工具&#xff0c;就连 vim的官方网站&#xff08; http://www.vim.org&#xff09;自己也说vim是一…

《无所不能的JavaScript · prototype 原型链》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流。&am…

掌握Midjourney:一份全面的使用教程

Midjourney 它是一种通过人工智能生成图片的人工智能绘画工具&#xff0c;如何使用Midjourney&#xff1f;很简单&#xff0c;只要在对话框中输入imagine 命令&#xff0c;添加您需要的图像描述或关键字&#xff0c;并在发送后生成相应的艺术图片。除了其强大的生图功能外&…

STM32CubeMX如何配置生成项目以及安装包

目录 一、STM32CubeMX介绍 二、用STM32CubeMX生成项目 1.创建项目 2.定义引脚 3.配置时钟 4.保存项目 5.生成项目 6.打开项目 一、STM32CubeMX介绍 STM32CubeMX是STM32Cube工具家族中的一员&#xff0c;专门为STM32微控制器的开发提供便利。它是一款图形化工具&#xf…

古代VS现代,太阳黑子的影响有什么变化?

公元前28年&#xff0c;我国汉朝人在人类历史上第一次记载下了“太阳黑子”。在《汉书五行志》里是这样记载&#xff1a;“汉成帝河平元年三月乙未&#xff0c;日出黄&#xff0c;有黑气&#xff0c;大如钱&#xff0c;居日中央”。在2052年前&#xff0c;人类对于太阳黑子的认…

基于考研题库小程序V2.0实现倒计时功能板块和超时判错功能

V2.0 需求沟通 需求分析 计时模块 3.1.1、功能描述←计时模块用于做题过程中对每一题的作答进行30秒倒计时&#xff0c;超时直接判错&#xff0c;同时将总用时显示在界面上;记录每次做题的总用时。 3.1.2、接口描述←与判定模块的接口为超时判定&#xff0c;若单题用时超过 …

【BUG】已解决:JsonMappingException

已解决&#xff1a;JsonMappingException 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 概述&#xff1a; 没有getter方法的实体的序列化&#xff0c;并解决Jackson引发的JsonMappingException异常。 默认情况下&#xff0c;Jackson 2只会处理公有字段或具有公有get…

镭速助力全球高速传输,实现点对点高效传输打破时差壁垒!

在当今全球化的背景下&#xff0c;跨国界的文件协作已成为许多跨国企业日常工作的一部分。但是&#xff0c;时差和网络不稳定等因素常常影响团队间的有效交流与合作。特别是在大文件传输环节&#xff0c;传统的在线传输方法在接收方离线或网络条件不佳时显得力不从心&#xff0…

pycharm使用micropython

一、打开设置 2、搜索micropython、安装、重启 3、第5步需要设置成你插的电脑USB口&#xff0c;一个一个试 4、 5、 6、OK

【重大消息】报告称OpenAI的产品可经由微软的服务提供给中国客户

尽管OpenAI正在采取措施限制中国用户访问其平台&#xff0c;但一份最新报告称&#xff0c;中国用户仍可通过微软的Azure云计算平台访问该公司的产品。微软和OpenAI有着密切的合作关系&#xff0c;前者通过人工智能功能获得了独家产品访问权以拓展企业计算。最新的报道来自《The…

全新UI自助图文打印系统小程序源码 PHP后端 附教程

最新自助图文打印系统和证件照云打印小程序源码PHP后端&#xff0c;为用户用户自助打印的服务&#xff0c;包括但不限于文档、图片、表格等多种格式的文件。此外&#xff0c;它们还提供了诸如美颜、换装、文档打印等功能&#xff0c;以及后台管理系统&#xff0c;方便管理员对打…

超市收银系统源码

今天给大家分享一套线上线下打通的收银系统&#xff0c;安卓/win双端线下收银台&#xff0c;可DIY、多模板的三端线上小程序商城&#xff0c;除此之外ERP进销存管理、商品管理、会员营销都很完善。 重点是系统支持OEM贴牌独立部署和全开源源码&#xff0c;非常适合一些正在寻找…