R可视乎|混合多个图形

简介: 在同一页面上混合多个图形是一种常见的做法。它可以在同一数字上 总结大量信息,例如,它被广泛用于科学出版物。

前言


在同一页面上混合多个图形是一种常见的做法。它可以在同一数字上 总结大量信息,例如,它被广泛用于科学出版物。


par()

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

x <- rnorm(50)
y <- rnorm(50,2,2)

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

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')

`){Q[KS(R{]M[C`9CTO8LRL.pngimage.gif


layout()

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参数指四个外边空的行数。

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)

CI9(Q1}`5ABPDO64I)N$NPI.png

再将各个图进行填充

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)

image.gif$ME1(UO@]`(P[OG%9MSUX~C.png

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


gridExtra包—grid.arrange()

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

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

library(ggplot2)
library(gridExtra)

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

# 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)

9U82_B8Y][C779_EKJGLVMD.png


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

grid.arrange(g2, arrangeGrob(g3, g4, ncol=2), nrow = 2)

KDEDE(8W1EHSXCG59NZL)`R.png


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

grid.arrange(g2, arrangeGrob(g3, g4, g1,ncol=3), nrow = 2)

7]7@`2@P2ZH7Y36KNKZTEPX.png

目录
相关文章
|
监控 IDE Oracle
这 9 大工具助你玩转 Java 性能优化!
这 9 大工具助你玩转 Java 性能优化!
709 0
这 9 大工具助你玩转 Java 性能优化!
|
关系型数据库 MySQL canal
实战 | canal 实现Mysql到Elasticsearch实时增量同步
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
7966 0
|
iOS开发 机器学习/深度学习
iOS ContactsUI(联系人)
1. 带UI的通讯录 #import "ViewController.h" #import @interface ViewController () @end @implementation ViewController // 触摸显示 - (v...
1017 0
|
测试技术 编译器
LLVM每日谈之六 LLVM的源码结构
 作者:snsn1984 这里简单介绍下LLVM的源码结构,让大家知道LLVM的每个文件夹都放的是什么内容。 参考文档: http://llvm.org/docs/GettingStarted.html#getting-started llvm/examples 这个目录主要是一些简单例子,演示如何使用LLVM IR 和 JIT。
1225 0
|
12天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
11天前
|
存储 人工智能 搜索推荐
终身学习型智能体
当前人工智能前沿研究的一个重要方向:构建能够自主学习、调用工具、积累经验的小型智能体(Agent)。 我们可以称这种系统为“终身学习型智能体”或“自适应认知代理”。它的设计理念就是: 不靠庞大的内置知识取胜,而是依靠高效的推理能力 + 动态获取知识的能力 + 经验积累机制。
379 133
|
11天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
472 131
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
5天前
|
存储 安全 前端开发
如何将加密和解密函数应用到实际项目中?
如何将加密和解密函数应用到实际项目中?
212 138