创建乐高版本的马赛克图像

简介

今日内容比较“无用”,觉得比较好玩,所以就做一期“异类”可视化啦!主要介绍下 brickr 包,它将乐高(LEGO) 带入 R 和 tidyverse 生态系统中,该包分为2个部分:

  • Mosaics(马赛克):将图像转换为乐高积木的马赛克图像。

  • 3D 模型:使用 rgl 包,通过数据表构建 3D 乐高模型。

今天这一期主要介绍第一个部分:

马赛克

首先读取 PNG 或 JPEG 图像,然后使用 image_to_mosaicbuild_mosaic 函数 构建成乐高版本的马赛克图。下面给出一个官方的例子:

# install.packages("brickr")
library(brickr)
# install.packages("png")
library(png)# 图像获取
img <- tempfile()
download.file("https://r-charts.com/images/favicon.png",img, mode = "wb")# 创建LEGO版本的mosaic图
readPNG(img) %>%image_to_mosaic() %>%build_mosaic()

如果未安装该包,可使用install.packages("brickr")进行安装。这里readPNG()来自 png 包,记得也要提前安装。

这里是先建立一个临时文件 img,然后将网上的一张图下载下来,并存储到 img 中。之后读取图像和转化为马赛克数据,最后构建成马赛克图。

当然,如果你可以加载本地的图像,例如,小编将自己公众号的头像进行上传演示:

readPNG("avatar.png") %>%image_to_mosaic() %>%build_mosaic()

得到的图形如下:

image_to_mosaic()内部包含了一些重要的参数,详细介绍可见 ?image_to_mosaic()。这里主要修改 img_size 参数来调整图片尺寸,当是一个值时,表示创建一个正方形图像,如果是两个值c(56,48)则表示创建长为 56,宽为48的长方形图像。数值越大,像素越高,乐高版本的马赛克越密集,例如当img_size = 120时,得到的结果:

感觉拿来当头像也很好呀!如果想通过该功能制作头像,记得背景最好纯色,这样效果更佳。如果照片不是 png 格式,可以通过这个网站转化为 png 格式,再导入。

介绍构建过程

你可以使用 build_instructions 介绍你这个图构建的过程,默认是 6 步骤,例如官网例子:

library(brickr)
library(png)# Get the image
img <- tempfile()
download.file("https://r-charts.com/images/favicon.png",img, mode = "wb")# Create the LEGO instructions
readPNG(img) %>%image_to_mosaic() %>%build_instructions()

我将其应用到推文:R可视乎|用R给心仪的对象表白吧图形,这时得到的表白爱心构建步骤如下:

是不是还挺 Romantic 的

R可视乎|创建乐高版马赛克图相关推荐

  1. R语言使用两个分类变量创建双向表(Two Way Table、两个分类变量的频率表)实战: 矩阵的双向表、dataframe的双向表、条形图和马赛克图来可视化频率表

    R语言使用两个分类变量创建双向表(Two Way Table.两个分类变量的频率表)实战: 矩阵的双向表.dataframe的双向表.条形图和马赛克图来可视化频率表 目录

  2. R语言可视化:散点图、散点图和折线图(line charts)、3D散点图、旋转3D散点图、气泡图、corrgram包可视化相关性矩阵、马赛克图( Mosaic plots)、hexbin、密度图

    R语言可视化:散点图.散点图和折线图(line charts).3D散点图.旋转3D散点图.气泡图.corrgram包可视化相关性矩阵.马赛克图( Mosaic plots).hexbin.密度图 目 ...

  3. R语言gganimate包创建可视化gif动图、并使用anim_save函数保存可视化gif动图(gganimate export to gif)

    R语言gganimate包创建可视化gif动图.并使用anim_save函数保存可视化gif动图(gganimate export to gif) 目录

  4. R语言gganimate包创建可视化gif动图、可视化动图:ggplot2可视化静态散点图、gganimate包创建动态散点分面图(facet_wrap)动画基于transition_time函数

    R语言gganimate包创建可视化gif动图.可视化动图:ggplot2可视化静态散点图.gganimate包创建动态散点分面图(facet_wrap)动画基于transition_time函数 目 ...

  5. R语言gganimate包创建可视化gif动图、可视化动图:、gganimate包创建动态线型图动画基于transition_time函数、使用geom_point函数显示动画移动的数据点

    R语言gganimate包创建可视化gif动图.可视化动图:.gganimate包创建动态线型图动画基于transition_time函数.使用geom_point函数显示动画移动的数据点 目录

  6. R语言gganimate包创建可视化gif动图、可视化动图:创建动态散点图动画基于transition_time函数、使用shadow_wake函数配置动画的渐变效果(gradual falloff)

    R语言gganimate包创建可视化gif动图.可视化动图:创建动态散点图动画基于transition_time函数.使用shadow_wake函数配置动画的渐变效果(gradual falloff) ...

  7. R语言gganimate包创建可视化gif动图:gganimate包创建动态线型图动画基于transition_time函数、使用geom_point函数显示动画移动的数据点、并保留线图中的全部数据点

    R语言gganimate包创建可视化gif动图:gganimate包创建动态线型图动画基于transition_time函数.使用geom_point函数显示动画移动的数据点.并保留线图中的全部数据点 ...

  8. R语言gganimate包创建可视化gif动图:ggplot2可视化静态条形图(bar plot)、gganimate包创建动态条形图(bar plot)动画、基于transition_time函数

    R语言gganimate包创建可视化gif动图:ggplot2可视化静态条形图(bar plot).gganimate包创建动态条形图(bar plot)动画.基于transition_time函数 ...

  9. R语言使用forestplot包绘制森林图:编码创建森林图仿真数据、汇总线修改、元素位置调整、垂直线、字体、风格、置信区间、线型、图例、刻度、标签等

    R语言使用forestplot包绘制森林图:编码创建森林图仿真数据.汇总线修改.元素位置调整.垂直线.字体.风格.置信区间.线型.图例.刻度.标签等 目录

最新文章

  1. c#关于JWT跨域身份验证解决方案
  2. stl string的erase方法
  3. 开启Windows8里面的Hyper-V虚拟机功能
  4. Linux进阶:DNS详解
  5. mysql 逻辑型_17. 逻辑运算符
  6. 【海洋女神原创】谈谈静默安装
  7. CF536C-Tavas and Pashmaks【凸壳】
  8. Hive 热门数据分析面试题解析
  9. 织梦index.php源代码,PHP网站目录程序(织梦 v5.7 二次开发)
  10. (81)FPGA复位激励(task)
  11. 找出有序数组中绝对值最小的数
  12. Redis缓存相关问题总结
  13. 显示器不亮电源灯闪_台式电脑显示屏不亮指示灯一直闪烁
  14. SageMath密码学密码体制及加解密
  15. 互联网 HR 黑话大全,太真实了!
  16. 2022计算机系统大作业——程序人生-Hello’s P2P
  17. 海南大学计算机科学与技术知乎,海南大学计算机科学与技术怎么样
  18. 企业快车道上的3个信号灯
  19. 还原《魔兽争霸3》场景全过程
  20. 关于程序员的问题,我是看大佬说的不是我说的。

热门文章

  1. python numpy 图片 pad 参数详解
  2. linux磁盘所有格式化命令,Linux磁盘格式化命令的详细说明
  3. td设置虚线dotted框,在chrome下有时会出现实线bug
  4. 【TCP/IP】IP:网际协议(寻址和路由)
  5. 解决使用 Bluetooth Audio Receiver 蓝牙传音卡顿问题
  6. word图文设计:如何用图片水印功能制作日历画册
  7. (译)对词向量化的直观理解:从计数向量到Word2Vec
  8. PTA A1007A1008
  9. 基于webScoket的在线客服聊天
  10. js中的经典题Foo.getName