R语言拼图工具customLayout怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
在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)
其中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)
参数含义同上。
cl = lay_bind_col(lay, lay2, widths = c(3, 1)) lay_show(cl)
以上过程将前两个例子横向拼接,两个模块对象仍然支持设置款对比例(3:1)
lay3 <- lay_new(matrix(1:2)) lay4 <- lay_bind_row(cl, lay3, heights = c(5, 2)) lay_show(lay4)
不同层级的对象仍然支持拼接在一起。
除此之外,也可以将一个模块嵌入到两一个模块特定位置。
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)
这里就将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)
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)
customLayout包的版式布局思想非常简单,就是基于数值矩阵的模块化分割,同时不同层级的模块也可相互拼接,这样就可以像拼七巧板一样拼出很多奇形怪状的版式出来,甚至你使用这种版式来设计一个富有美感的超照片拼图或者海报都有可能。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/208373.html