双十一狂欢,全场五折带回家

作者简介

杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化。

个人公众号:数据小魔方(微信ID:datamofang) ,“数据小魔方”创始人。

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

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


阅读原文了解课程详情:

一个敲有趣的R语言拼图工具相关推荐

  1. 如何用R语言做工具变量回归(未完工版本

    在计量经济学中的回归中,可能会遇到遗漏变量偏误.测量误差.双向因果等问题,那么工具变量是解决此类内生性问题的几大利器之一.本文用Stock&Waston课本章节为例,展示如何在R语言中进行工具 ...

  2. R语言开发工具RStudio的安装

    下载 之前咱们安装好了R语言也看到了R语言的编译器,但是,它原生的编译器界面是比较简陋的,因此,我们可以选择一个可视化和交互性较为友好的编译器--RStudio,下载地址: https://www.r ...

  3. R语言ggplot2 | 告别AI和PS,地表最全R语言拼图

  4. R语言中文社区2018年终文章整理(作者篇)

    欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习,python,R等数据领域感兴趣的同学 ...

  5. r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf

    ​注: 本文是R语言sf包的核心开发者和维护者--来自德国明斯特大学的地理信息学教授:Edzer Pebesma 的一篇关于sf包的简介,发表于2018年7月的R语言期刊,主要讲述了sf的定位.功能. ...

  6. R语言的一个加法函数

    ## R语言中的加法函数 add4 <- function(x, y) {x + y } 一个复杂一些的R语言程序 ## R语言程序 add2 <- function(x, y) {x + ...

  7. R语言如何向向量中追加一个元素?

    R语言如何向向量中追加一个元素? 目录 R语言如何向向量中追加一个元素? R语言是解决什么问题的? R语言如何向向量中追加一个元素? R语言是解决什么问题的? R 是一个有着统计分析功能及强大作图功能 ...

  8. R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象

    R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象 目录 R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象 R语言是解决什么问题的? R语言使用多个数据类型不 ...

  9. Mac上安装R语言运行环境及RStudio [超详细!~]

    前言 我们需要安装:1)R语言环境,2)Rstudio软件(R语言开发工具). 我的安装方法参考了博文mac上安装R和RStudio,感谢作者. 接下来分步骤展示详细方法,并给出一个运行示例~ Ste ...

  10. R语言学习路径和感受

    第一次接触R语言是我读研的时候,算到现在有5年多了.R语言可以算得上是我进入编程世界的启蒙语言,尽管在大学期间为了考试而被迫学习过计算机二级,但那真心是没有一丁点的兴趣可言.进入R的世界后,真的越来越 ...

最新文章

  1. VC++技术内幕(三)
  2. linux搭建--centos使用qemu-kvm,libvirt搭建虚拟机,并搭建libvmi来虚拟机自省(四)
  3. linux命令(32):free命令
  4. 方法对象Spring MVC SimpleFormController
  5. 谷歌安全研究员发现3个 Apache Web 服务器软件缺陷
  6. 在线2-36任意进制转换工具
  7. 六款主流数据恢复软件(绿色版)下载
  8. 51单片机汇编语言指令汇总
  9. 车机没有carlife可以自己下载吗_安卓车机CarPlay模块初体验
  10. Ubuntu16.04设置AP热点方法
  11. 图灵5月书讯※特别制作【MongoDB将在5月中旬隆重上市】
  12. 判断四张扑克牌能否凑成24点游戏算法
  13. 【苹果开发者账号】记一次苹果账号付款失败,报 未完成付款 的问题,全网都没解决办法!
  14. VS2005向前向后定位图标
  15. UVa 12307 Smallest Enclosing Rectangle(旋转卡壳+最小覆盖矩形)
  16. DRM GEM 驱动程序开发(dumb)
  17. 【ROS】[rosrun] Couldn't find executable named
  18. Python之Email邮箱账号抓取
  19. repost 双非本科到腾讯的编程奋斗之路
  20. UNOVO联永羲和开源项目

热门文章

  1. mybatis-plus 官方发布神器,一个依赖轻松搞定数据权限,再也不用自己实现了!...
  2. 阿里面试官:为什么MySQL数据库索引选择使用B+树而不是跳表?
  3. 借着酒劲儿,是真敢说!程序员酒后吐真言
  4. Swagger 3.0 官方 starter 诞生,野生的可以扔了!
  5. Oracle用户可要顶住了:准备好大规模补丁工作!以修补多达 433 个的新安全漏洞...
  6. 面试要10K,HR说你只值7K,怎么斗得过?
  7. 一些常见的代码异味及解决之道
  8. 来自微信团队的6个开源项目
  9. Python 密集知识点汇总
  10. 困难之下见证良心公司!!