Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >R可视化 | 混合多个图形

R可视化 | 混合多个图形

作者头像
朱小五
发布于 2020-09-07 08:55:19
发布于 2020-09-07 08:55:19
1.4K00
代码可运行
举报
文章被收录于专栏:凹凸玩数据凹凸玩数据
运行总次数:0
代码可运行

作者:庄闪闪

在同一页面上混合多个图形是一种常见的做法。

它可以在同一数字上总结大量信息,例如,它被广泛用于科学出版物。

par()

一页多图用mfrow参数或mfcol参数规定,这也是我几年前经常用的一种方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x <- rnorm(50)
y <- rnorm(50,2,2)

随便模拟产生数据,并对数据绘制一些简单的图,用该函数将一页中对他们进行全部展示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
par(mfrow=c(2,2))
plot(x, y, xlab = "", ylab = "")
hist(x,main='')
qqnorm(x,main = '');qqline(x)
barplot(x, axes = FALSE, space = 0,col='white')

layout()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
layout(mat, widths = rep.int(1, ncol(mat)),
       heights = rep.int(1, nrow(mat)), respect = FALSE)
  • mat 参数为一个矩阵,提供了作图的顺序以及图形版面的安排。0代表空缺,不绘制图形,大于0 的数代表绘图顺序,相同数字代表占位符。
  • widths 和 heights 参数提供了各个矩形作图区域的长和宽的比例。
  • respect 参数控制着各图形内的横纵轴刻度长度的比例尺是否一样。
  • n 参数为欲显示的区域的序号。

生成2行2列的版面,并设置宽度和高度。par()中oma参数指四个外边空的行数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
par(oma = c(2,2,2,2))
nf <- layout(matrix(c(1,2,1,3),2,2),widths = c(1, 3), heights = c(1, 2))
layout.show(nf)

再将各个图进行填充

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plot(x, y, xlim = xrange, ylim = yrange, xlab = "", ylab = "")
barplot(xhist$counts, axes = FALSE, ylim = c(0, top), space = 0)
barplot(yhist$counts, axes = FALSE, xlim = c(0, top), space = 0, horiz = TRUE)

前面两种方法,说实话可以实现,但是比较费劲。那么下面看看gridExtra包。

gridExtra包—grid.arrange()

gridExtra包让混合多个图片变得轻而易举。它提供了grid.arrange() 函数来完成 这个任务。它的nrow参数允许指定如何安排布局。

对于更复杂的布局,arrangeGrob() 函数允许做一些嵌套。这里有 4 个 例子来说明 gridExtra 是如何工作的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(gridExtra)

这里我们用ggplot绘图,并存在变量名称(g1,g2,g3)中,然后用grid.arrange()将各个变量名称展现出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Make 3 simple graphics:
g1 <- ggplot(mtcars, aes(x=qsec)) + geom_density(fill="slateblue")
g2 <- ggplot(mtcars, aes(x=drat, y=qsec, color=cyl)) + geom_point(size=5) + theme(legend.position="none")
g3 <- ggplot(mtcars, aes(x=factor(cyl), y=qsec, fill=cyl)) + geom_boxplot() + theme(legend.position="none")
g4 <- ggplot(mtcars , aes(x=factor(cyl), fill=factor(cyl))) + geom_bar()
# Plots
grid.arrange(g1, g2, g3, nrow = 3)

当然可以使用参数arrangeGrob(),下面绘制了两行,第一行是g2,第二行是g3,g4.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grid.arrange(g2, arrangeGrob(g3, g4, ncol=2), nrow = 2)

下面绘制了两行,第一行是g2,第二行是g3,g4,g1.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grid.arrange(g2, arrangeGrob(g3, g4, g1,ncol=3), nrow = 2)

参考资料

[1]

《R语言教程》——李东风

[2]

R Graphical Representation – Multiple Plots in One Graph

[3]

http://lightonphiri.org/blog/r-graphical-representation-multiple-plots-in-one-graph

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ggplot2扩展
写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。
生信喵实验柴
2022/10/25
3510
ggplot2扩展
目前最全的R语言-图片的组合与拼接
李誉辉,四川大学硕士在读,研究数据分析与可视化,以及网络爬虫。誉辉兄最近出的文章都是很系统的,从R ggplot2的基础讲解到三维数据可视化plot3D,文章都整理讲解得很全面系统,我本人也是很喜欢这样的文章,故而推荐给大家。
生信宝典
2019/09/29
5.6K0
目前最全的R语言-图片的组合与拼接
技术贴:R语言拼图全面介绍
说起R语言的拼图,可能大家一点都不陌生,比如常用的“cowplot”和“patchwork”。gridExtra包也提供了一个拼图函数”grid.arrange“。另外,南方医科大学余光创教授也开发了一个更为神奇的拼图R包:aplot。本文将依次对它们的用法进行介绍。
作图丫
2022/03/29
5.9K0
技术贴:R语言拼图全面介绍
ggplot2学习笔记之图形排列
作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源
生信宝典
2018/12/18
2.5K0
ggplot2学习笔记之图形排列
R 语言柱状图示例笔记
柱状图的介绍就先到这里,其他可替代柱状图的图形包含棒棒糖图(Lollipop)、环形柱状图等未在本文中展开介绍,有兴趣的小伙伴可参考文章最后的参考资料。
章鱼猫先生
2021/10/15
1.6K0
R 语言柱状图示例笔记
跟着Nature Communications 学画图~ggplot2拼图
今天继续 跟着Nature Communications学画图 系列第五篇。学习R语言ggplot2包画图。然后多个图拼接到一起。对应的是论文中的补充材料图一。
用户7010445
2020/11/13
1.4K0
跟着Nature Communications 学画图~ggplot2拼图
R包:gtable包用于处理ggplot2图像
ggplot2是基于grid的绘图工具,它绘制的图像其实是由多个grob(grid graph object)组成的,比如一张点图,它的标题是titleGrob,点图的基本单元包括pointsGrob。
生信菜鸟团
2020/10/12
2.4K0
88-R可视化20-R的几种基于ggplot的拼图解决方案
有几个经典流派的R包customLayout、grid、gridExtra、cowplot 等等。
北野茶缸子
2022/02/08
4.1K0
88-R可视化20-R的几种基于ggplot的拼图解决方案
「R」ggplot2数据可视化
R有几种不同的系统用来产生图形,但ggplot2是最优雅而多变的那一种。ggplot2实现了图形语法,一种描述和构建图形的逻辑系统。通过ggplo2,我们能够快速学习,多处应用。
王诗翔呀
2020/07/03
7.5K0
R可视化:ggpubr的基本图形
GGPlot2(通常缩写为ggplot2)是一个在R语言中广泛使用的绘图包,以其灵活和强大的数据可视化功能而闻名。它基于"The Grammar of Graphics"一书的概念,允许用户通过组合不同的视觉元素来创建自定义的图形。而ggpubr是ggplot2的一个扩展包,它进一步简化了图形的创建过程,特别是对于初学者来说,提供了一种更为直观和易于理解的绘图方式。
生信学习者
2024/06/11
2210
R可视化:ggpubr的基本图形
可视化绘制技巧|对多图合理排版布局
通常而言,在绘制图形的时候都是绘制某一种类型的一张图形,例如绘制一张散点图,绘制直方图。但有的时候我们希望同时展示多幅图形,可能是因为这些图形有某种联系,需要共同展示才能够更好的表达数据中蕴含的信息。之前介绍的边际图形就是这样的一个例子。本章节会介绍,当我们绘制了好了多幅图形之后,如何将多幅图形合并起来。
DataCharm
2021/02/22
2.7K0
可视化绘制技巧|对多图合理排版布局
R语言 多图布局一个函数就够:plot_layout
上图 p1 + p2 + p3 + p4 + p5 + plot_layout(byrow = FALSE)
拴小林
2021/05/31
2.4K0
R语言 多图布局一个函数就够:plot_layout
[R语言]数据可视化的最佳解决方案:ggplot2
ggplot是一个拥有一套完备语法且容易上手的绘图系统,在Python和R中都能引入并使用,在数据分析可视化领域拥有极为广泛的应用。本篇从R的角度介绍如何使用ggplot2包,首先给几个我觉得最值得推荐的理由:
TOMOCAT
2020/06/10
2.8K0
「R」cowplot(四)图形排列
如果你指定labels="AUTO"或labels="auto",那么标签会自动按照大写或小写排列:
王诗翔呀
2020/07/06
2.5K0
「R」cowplot(四)图形排列
67-R可视化11-用ggrepel更加美观的添加标记(火山图的实现)
上一讲我们提到了66-R可视化10-自由的在ggplot上添加文本(柱状图加计数)[2]
北野茶缸子
2021/12/17
4.3K0
67-R可视化11-用ggrepel更加美观的添加标记(火山图的实现)
121-R可视化39-对拼图结果做标记
其实这样的操作,在[[88-R可视化20-R的几种基于ggplot的拼图解决方案]] 中,就已经提到了。这里来进行一下总结。
北野茶缸子
2022/04/05
6050
121-R可视化39-对拼图结果做标记
数据可视化编程实战_大数据可视化
经常有对比R,Python和Julia之间的讨论,似乎R语言在这三者之中是最为逊色的,实则不可一概而论。
全栈程序员站长
2022/11/17
8.7K0
数据可视化编程实战_大数据可视化
使用patchwork进行拼图的一些细节
说到拼图,那必须得好好学习patchwork包,这个包是Thomas大佬的作品,一经推出就火了,迅速取代了R中其他的拼图包。
医学和生信笔记
2022/11/15
5.2K0
使用patchwork进行拼图的一些细节
R语言之可视化①⑥一页多图(2)目录
cowplot包是ggplot2的简单附加组件。 它旨在为ggplot2提供一个出版物就绪的主题,这个主题需要最少量的轴标签尺寸,情节背景等。对'ggplot2'库的一些有用的扩展和修改。 特别是,这个软件包可以很容易地将多个'ggplot2'图组合成一个并用字母标记它们,例如 A,B,C等,这是科学出版物经常需要的。 该软件包还提供了一个流线型和干净的主题,用于Wilke实验室,因此包名称代表Claus O. Wilke的绘图库。
用户1359560
2018/12/14
1K0
R语言之可视化①⑥一页多图(2)目录
一个敲有趣的R语言拼图工具
在10月CRAN更新的R包中,发现了一个挺有意思的R包——customLayout,听名字就很神奇。
数据小磨坊
2018/12/07
1.3K0
相关推荐
ggplot2扩展
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验