一个敲有趣的R语言拼图工具

简介:

在10月CRAN更新的R包中,发现了一个挺有意思的R包——customLayout,听名字就很神奇。

它可以用来完成自由拼图,可以使用矩阵自定义图形位置和顺序,用数字来定义每一个模块的长宽比,试用了一遍简直爱不释手,在这里分享给大家。

这个包不仅支持数字拼图,还支持R内置的base绘图对象、grid绘图对象等(也就是支持ggplot2对象)

这样的话,对于需要制作简单仪表盘的场景,完全不必要使用rmarkdown+flexdashboard或者shiny+shinydashboard也可以快速生成仪表盘原型。

customLayout包有CRAN版本,也有github版本可供下载:


install.packages("customLayout")
devtools::install_github("zzawadz/customLayout")

简单的数字拼图:

通过设置简单的数字矩阵以及对应的宽高比,可以非常方便的设置出来数字拼图:


library(customLayout)library(magrittr)
lay <- lay_new(
mat = matrix(1:4, ncol = 2),
widths = c(3, 2),
heights = c(2, 1))
lay_show(lay)
82f2477dee889c53e5563634831eb283a68b9d30

其中mat指定要拼图的数字矩阵,将1:4数字按照纵向顺序拼成两行,其中宽对比为3:2,高度比为2:1。


lay2 <- lay_new(
matrix(1:4, nc = 2),
widths = c(3, 5),
heights = c(2, 4))
lay_show(lay2)

参数含义同上。

a96bd250adec93069dcff854e7f842f0136237b6


cl = lay_bind_col(lay, lay2, widths = c(3, 1))
lay_show(cl)
4ddcddfd4f66347460b9c96c13e878475eaa7c8c

以上过程将前两个例子横向拼接,两个模块对象仍然支持设置款对比例(3:1)


lay3 <- lay_new(matrix(1:2))
lay4 <- lay_bind_row(cl, lay3, heights = c(5, 2))
lay_show(lay4)
1c7df5ad49518e10cb0a22c389b07c6d66e24bee

不同层级的对象仍然支持拼接在一起。

除此之外,也可以将一个模块嵌入到两一个模块特定位置。


lay <- lay_new(
matrix(1:4, nc = 2),
widths = c(3, 2),
heights = c(2, 1))
lay_show(lay)
lay2 <- lay_new(
matrix(1:4, nc = 2),
widths = c(3, 5),
heights = c(2, 4))
lay_show(lay2)
slay <- lay_split_field(lay, lay2, field = 4)
lay_show(slay)
8a8786c46f451cff3a05bf384423748633392f5f

这里就将lay2嵌入到lay模块的第四个区域,但may2内部的布局结构任然不变。

关于图像对象的布局与拼接:

基础绘图对象的拼接:


par(mar = c(3, 2, 2, 1))
lay <- lay_new(
matrix(1:4, nc = 2),
widths = c(3, 2),
heights = c(2, 1))
lay2 <- lay_new(matrix(1:3))
cl <- lay_bind_col(lay, lay2, widths = c(3, 1))
lay_show(cl)

lay_set(cl) # initialize drawing areaset.seed(123)
plot(1:100 + rnorm(100))
plot(rnorm(100), type = "l")
hist(rnorm(500))
acf(rnorm(100))
pie(c(3, 4, 6), col = 2:4)
pie(c(3, 2, 7), col = 2:4 + 3)
pie(c(5, 4, 2), col = 2:4 + 6)
f6e5c1d1854d71d4ab3e01f75917b3d6ae49ffb6

grid(ggplot2)图形对象的拼接:


library(ggplot2)library(gridExtra)
lay <- lay_new( matrix(1:2, ncol = 1))
lay2 <- lay_new(matrix(1:3))
cl <- lay_bind_col(lay, lay2, widths = c(3, 1))
cuts <- sort(unique(diamonds[["cut"]]),decreasing = TRUE)
make_cut_plot <- function(cut) {
dd <- diamonds[diamonds[["cut"]] == cut, ]
ggplot(dd) +
geom_point(aes(carat, price)) +
facet_wrap("cut")
}
plots <- lapply(cuts, make_cut_plot)
lay_grid(plots, cl)
b8e887986ebf8fa7810e618ae9299377c8b1e60d

customLayout包的版式布局思想非常简单,就是基于数值矩阵的模块化分割,同时不同层级的模块也可相互拼接,这样就可以像拼七巧板一样拼出很多奇形怪状的版式出来,甚至你使用这种版式来设计一个富有美感的超照片拼图或者海报都有可能。


原文发布时间为:2018-11-4

本文作者:杜雨

本文来自云栖社区合作伙伴“数据小魔方”,了解相关信息可以关注“数据小魔方”。

相关文章
|
搜索推荐 Linux Python
VET:一个基于R语言的VCF数据提取工具,支持按基因ID、物理位置、样品名称提取指定变异信息
VET:一个基于R语言的VCF数据提取工具,支持按基因ID、物理位置、样品名称提取指定变异信息
|
24天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
41 3
|
24天前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
41 2
|
24天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
25 2
|
6月前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
【4月更文挑战第25天】R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
175 1
|
6月前
|
数据可视化 JavaScript 数据挖掘
探索R语言中的数据可视化工具
【4月更文挑战第25天】本文介绍了R语言的数据可视化,重点关注ggplot2和lattice包。ggplot2基于图形语法,允许用户通过图层创建复杂图表,例如`ggplot(data, aes(x=x_variable, y=y_variable)) + geom_point()`可绘制散点图。lattice包适用于多变量数据展示,如分面散点图。此外,还提到了plotly、D3.js和shiny等其他可视化工具,以及地图绘制和热图创建技巧。掌握这些工具能帮助数据分析人员更好地理解和呈现数据。
61 1
|
6月前
|
数据可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
R语言两阶段最小⼆乘法2SLS回归、工具变量法分析股息收益、股权溢价和surfaces曲面图可视化
|
6月前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
6月前
R语言工具变量与两阶段最小二乘法
R语言工具变量与两阶段最小二乘法

热门文章

最新文章