R可视乎|创建乐高版马赛克图

简介: 今日内容比较“无用”,觉得比较好玩,所以就做一期“异类”可视化啦!主要介绍下 brickr[1] 包,它将乐高(LEGO) 带入 R 和 tidyverse 生态系统中,该包分为2个部分:• Mosaics(马赛克)[2]:将图像转换为乐高积木的马赛克图像。• 3D 模型[3]:使用 rgl 包,通过数据表构建 3D 乐高模型。今天这一期主要介绍第一个部分:

简介


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

  • Mosaics(马赛克)[2]:将图像转换为乐高积木的马赛克图像。
  • 3D 模型[3]:使用 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 包,记得也要提前安装。

image.gifF]HB4M0K(DFK}2KMZA%V948.jpg

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

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

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


得到的图形如下:

BAO9D(56%T%@[__PIG(~H4W.jpg

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

({Z8XB5T~`UOE87PA0W)L9G.jpgimage.gif

感觉拿来当头像也很好呀!如果想通过该功能制作头像,记得背景最好纯色,这样效果更佳。如果照片不是 png 格式,可以通过这个网站[4]转化为 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()

C7V7L]YC4KI$2$$KM{8`42A.png

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

W7IKZNKGVHYA%ORLXGPFX4J.png

是不是还挺 Romantic 的👻


使用乐高的材料

你可以通过 build_pieces 函数,告诉大家这个图使用了哪些颜色,形状的乐高材料。例如,官网例子:

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

]P1$Y)OK6]0W%]VXFFR~D~T.png

目录
相关文章
|
人工智能 达摩院 自然语言处理
超好用的开源模型平台,ModelScope阿里达摩院
超好用的开源模型平台,ModelScope阿里达摩院
1818 1
|
存储 数据库 索引
Flutter笔记:滚动之-无限滚动与动态加载的实现(GetX简单状态管理版)
本文介绍Flutter中如何实无线滚动(基于GetX简单状态管理而非有状态组件)
398 0
|
5月前
|
人工智能 JSON 自然语言处理
【2026最新最全】从零开始学 Trae:我的第一个贪吃蛇小游戏实战
Trae是字节跳动推出的AI原生代码编辑器,支持智能补全、自动修Bug、多语言开发,集成doubao、DeepSeek等大模型,提供国内版与国际版,助力开发者高效编程。
1148 8
|
4月前
|
人工智能 数据可视化 网络安全
2026年部署OpenClaw(Clawdbot)接入iMessage详细步骤(喂饭级,小白抄作业)
在AI自动化办公与多端协同需求爆发的2026年,OpenClaw(原Clawdbot、曾用名Moltbot)凭借“自然语言驱动、全场景任务自动化、多终端无缝适配”的核心优势,成为个人办公提效、轻量运营管理的优选工具。作为GitHub星标量超19万的开源AI自动化代理平台,它打破了传统AI仅能对话的局限,真正实现“能听指令、能做实事”——无论是文档生成、日程提醒、文件整理,还是联网搜索、简单代码开发、跨工具协同,只需一句口语化指令,就能自动完成全流程操作,无需手动干预。
1791 21
|
人工智能 自然语言处理 数据挖掘
如何通过AI辅助数据分析
“数据驱动决策"已成为企业战略共识,越来越多的企业将数据分析列入核心投资。随着AI越来越成熟,使用AI辅助数据分析可以显著提升效率、深度和自动化水平。
1513 7
|
存储 安全 数据安全/隐私保护
Maccy: 轻量级剪贴板管理器
【10月更文挑战第10天】
2442 4
STM32CubeMX 按键控制LED
STM32CubeMX 按键控制LED
599 0
|
安全 Java 应用服务中间件
如何将Spring Boot应用程序运行到自定义端口
如何将Spring Boot应用程序运行到自定义端口
1675 0
|
网络协议 网络架构
Element UI 自定义/修改下拉弹窗的样式(如级联选择器的下拉弹窗样式)
Element UI 自定义/修改下拉弹窗的样式(如级联选择器的下拉弹窗样式)
1601 0

热门文章

最新文章