mirror of
https://github.com/ryantimpe/brickr.git
synced 2025-12-30 10:19:43 -06:00
383 lines
40 KiB
HTML
383 lines
40 KiB
HTML
<!DOCTYPE html>
|
||
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Tools to emulate the LEGO® System in R • brickr</title>
|
||
<!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
|
||
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="apple-touch-icon.png">
|
||
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="apple-touch-icon-120x120.png">
|
||
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="apple-touch-icon-76x76.png">
|
||
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="apple-touch-icon-60x60.png">
|
||
<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous">
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha256-eZrrJcwDc/3uDhsdt61sL2oOBY362qM3lon1gyExkL0=" crossorigin="anonymous">
|
||
<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script><!-- sticky kit --><script src="https://cdnjs.cloudflare.com/ajax/libs/sticky-kit/1.1.3/sticky-kit.min.js" integrity="sha256-c4Rlo1ZozqTPE2RLuvbusY3+SU1pQaJC0TjuhygMipw=" crossorigin="anonymous"></script><!-- pkgdown --><link href="pkgdown.css" rel="stylesheet">
|
||
<script src="pkgdown.js"></script><link href="extra.css" rel="stylesheet">
|
||
<meta property="og:title" content="Tools to emulate the LEGO® System in R">
|
||
<meta property="og:description" content="
|
||
Generate digital LEGO-esque models using tidyverse functions. Convert image files into 2D and 3D mosaics, along with piece counts and instructions.
|
||
Build 3D models using data frames with rayshader. Create brick bar charts with ggplot2.">
|
||
<meta property="og:image" content="http://brickr.org/logo.png">
|
||
<meta name="twitter:card" content="summary">
|
||
<!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
|
||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||
<![endif]-->
|
||
</head>
|
||
<body>
|
||
<div class="container template-article">
|
||
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
|
||
<div class="container">
|
||
<div class="navbar-header">
|
||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
|
||
<span class="sr-only">Toggle navigation</span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<span class="navbar-brand">
|
||
<a class="navbar-link" href="index.html">brickr</a>
|
||
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">0.1.0.9024</span>
|
||
</span>
|
||
</div>
|
||
|
||
<div id="navbar" class="navbar-collapse collapse">
|
||
<ul class="nav navbar-nav">
|
||
<li>
|
||
<a href="index.html">
|
||
<span class="fa fa-home fa-lg"></span>
|
||
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="reference/index.html">Reference</a>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
|
||
Articles
|
||
|
||
<span class="caret"></span>
|
||
</a>
|
||
<ul class="dropdown-menu" role="menu">
|
||
<li>
|
||
<a href="articles/graphs.html">ggplot with brickr</a>
|
||
</li>
|
||
<li>
|
||
<a href="articles/models-from-other.html">3D Models from mosaics & rayshader</a>
|
||
</li>
|
||
<li>
|
||
<a href="articles/models-from-program.html">3D Models programmatically</a>
|
||
</li>
|
||
<li>
|
||
<a href="articles/models-from-tables.html">3D models from tables</a>
|
||
</li>
|
||
<li>
|
||
<a href="articles/mosaics.html">Mosaics with brickr</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<a href="news/index.html">Changelog</a>
|
||
</li>
|
||
</ul>
|
||
<ul class="nav navbar-nav navbar-right">
|
||
<li>
|
||
<a href="https://github.com/ryantimpe/brickr">
|
||
<span class="fa fa-github fa-lg"></span>
|
||
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<!--/.nav-collapse -->
|
||
</div>
|
||
<!--/.container -->
|
||
</div>
|
||
<!--/.navbar -->
|
||
|
||
|
||
</header><div class="row">
|
||
<div class="col-md-9 contents">
|
||
|
||
|
||
|
||
|
||
<div id="brickr" class="section level1">
|
||
<div class="page-header"><h1 class="hasAnchor">
|
||
<a href="#brickr" class="anchor"></a>brickr <img src="reference/figures/logo.png" align="right" height="138">
|
||
</h1></div>
|
||
<!-- <!-- badges: start -->
|
||
|
||
<div id="overview" class="section level2">
|
||
<h2 class="hasAnchor">
|
||
<a href="#overview" class="anchor"></a>Overview</h2>
|
||
<p><strong>brickr</strong> is a package for bringing the LEGO® experience into the R and <a href="https://www.tidyverse.org/">tidyverse</a> ecosystem.</p>
|
||
<p>The package is divided into 3 separate systems:</p>
|
||
<ul>
|
||
<li>
|
||
<a href="#mosaics"><strong>Mosaics</strong></a>: Convert image files into mosaics that could be built using LEGO® bricks.</li>
|
||
<li>
|
||
<a href="#3d-models"><strong>3D Models</strong></a>: Build 3D LEGO® models from simple data formats & <a href="https://www.rayshader.com/">rayshader</a>.</li>
|
||
<li>
|
||
<a href="#charts"><strong>Charts</strong></a>: A <a href="https://ggplot2.tidyverse.org/">ggplot2</a> extension to generate plots that resemble LEGO® bricks.</li>
|
||
</ul>
|
||
<p>brickr also includes tools help users create the Mosaics and 3D model output using real LEGO® elements.</p>
|
||
<p>Check out <a href="http://brickr.org">brickr.org</a> for more detail!</p>
|
||
<div id="whats-the-point" class="section level3">
|
||
<h3 class="hasAnchor">
|
||
<a href="#whats-the-point" class="anchor"></a>What’s the point?</h3>
|
||
<p>The goal of <strong>brickr</strong> is to provide a series of tools to integrate the LEGO® system with R by:</p>
|
||
<ul>
|
||
<li>Enhancing a real world building experience with mosaics, generated instructions, and piece counts.</li>
|
||
<li>Generating interest in R and coding for new audiences with easy-to-create 3D models.</li>
|
||
<li>or just embracing pure novelty.</li>
|
||
</ul>
|
||
<p><em>brickr is developed using publicly available information about LEGO® products and is not officially affiliated with The LEGO Group</em></p>
|
||
</div>
|
||
</div>
|
||
<div id="installation" class="section level2">
|
||
<h2 class="hasAnchor">
|
||
<a href="#installation" class="anchor"></a>Installation</h2>
|
||
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb1-1" title="1"><span class="co"># To install the latest version from Github:</span></a>
|
||
<a class="sourceLine" id="cb1-2" title="2"><span class="co"># install.packages("devtools")</span></a>
|
||
<a class="sourceLine" id="cb1-3" title="3">devtools<span class="op">::</span><span class="kw"><a href="https://www.rdocumentation.org/packages/devtools/topics/reexports">install_github</a></span>(<span class="st">"ryantimpe/brickr"</span>)</a>
|
||
<a class="sourceLine" id="cb1-4" title="4"></a>
|
||
<a class="sourceLine" id="cb1-5" title="5"><span class="co">#For 3D features, rayshader is also required.</span></a>
|
||
<a class="sourceLine" id="cb1-6" title="6"><span class="kw"><a href="https://www.rdocumentation.org/packages/utils/topics/install.packages">install.packages</a></span>(<span class="st">"rayshader"</span>)</a></code></pre></div>
|
||
</div>
|
||
<div id="mosaics" class="section level2">
|
||
<h2 class="hasAnchor">
|
||
<a href="#mosaics" class="anchor"></a>Mosaics</h2>
|
||
<p>The mosaic functions renders an imported JPG or PNG file using LEGO colors and bricks.</p>
|
||
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb2-1" title="1">demo_img =<span class="st"> </span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/tempfile">tempfile</a></span>() </a>
|
||
<a class="sourceLine" id="cb2-2" title="2"><span class="kw"><a href="https://www.rdocumentation.org/packages/utils/topics/download.file">download.file</a></span>(<span class="st">"http://ryantimpe.com/files/mf_unicorn.PNG"</span>, demo_img, <span class="dt">mode=</span><span class="st">"wb"</span>)</a>
|
||
<a class="sourceLine" id="cb2-3" title="3"></a>
|
||
<a class="sourceLine" id="cb2-4" title="4">mosaic1 <-<span class="st"> </span>png<span class="op">::</span><span class="kw"><a href="https://www.rdocumentation.org/packages/png/topics/readPNG">readPNG</a></span>(demo_img) <span class="op">%>%</span><span class="st"> </span></a>
|
||
<a class="sourceLine" id="cb2-5" title="5"><span class="st"> </span><span class="kw"><a href="reference/image_to_mosaic.html">image_to_mosaic</a></span>(<span class="dt">img_size =</span> <span class="dv">36</span>) <span class="co">#Length of each side of mosaic in "bricks"</span></a>
|
||
<a class="sourceLine" id="cb2-6" title="6"></a>
|
||
<a class="sourceLine" id="cb2-7" title="7"><span class="co">#Plot 2D mosaic</span></a>
|
||
<a class="sourceLine" id="cb2-8" title="8">mosaic1 <span class="op">%>%</span><span class="st"> </span><span class="kw"><a href="reference/build_mosaic.html">build_mosaic</a></span>()</a></code></pre></div>
|
||
<p><img src="index_files/figure-html/m1_set-1.png" width="288"></p>
|
||
<p>In general, any <strong>brickr</strong> function that begins with <code>build_</code> generates a graphical output from a <strong>brickr</strong> list object, generated from other functions.</p>
|
||
<div id="customization" class="section level3">
|
||
<h3 class="hasAnchor">
|
||
<a href="#customization" class="anchor"></a>Customization</h3>
|
||
<p><code><a href="reference/image_to_mosaic.html">image_to_mosaic()</a></code> can take a few important arguments. See <code>?image_to_mosaic()</code> for full detail.</p>
|
||
<ul>
|
||
<li><p><code>img_size</code> Providing a single value, such as <code>48</code>, crops the image to a square. Inputting a 2-element array, <code><a href="https://www.rdocumentation.org/packages/base/topics/c">c(56, 48)</a></code>, will output a rectangular image of <code><a href="https://www.rdocumentation.org/packages/base/topics/c">c(width, height)</a></code>.</p></li>
|
||
<li><p><code>color_table</code> & <code>color_palette</code> Options to limit the color of bricks used in mosaics, as not all colors produced by LEGO are readily available. Set <code>color_palette</code> to ‘universal’ or <code><a href="https://www.rdocumentation.org/packages/base/topics/c">c('universal', 'generic')</a></code> to limit colors to the most common ones. Use a subset of the data frame <code>lego_colors</code> as the <code>color_table</code> to specify a custom palette.</p></li>
|
||
<li><p><code>method</code> Technique used to map image colors into the allowed brick colors. Defaults to ‘cie94`, but other options include ’cie2000’ and ‘euclidean’. Also includes the option ‘brickr_classic’, used in previous version of the package.</p></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div id="d-models" class="section level2">
|
||
<h2 class="hasAnchor">
|
||
<a href="#d-models" class="anchor"></a>3D Models</h2>
|
||
<p>The <code>bricks_from_*</code> series of functions creates 3D models of LEGO bricks from a variety of input formats. These models are rendered using <a href="https://twitter.com/tylermorganwall">Tyler Morgan-Wall</a>’s <a href="https://www.rayshader.com/">rayshader</a> package.</p>
|
||
<ul>
|
||
<li><p><code><a href="reference/bricks_from_table.html">bricks_from_table()</a></code> & <code><a href="reference/bricks_from_excel.html">bricks_from_excel()</a></code> convert a matrix-shaped table of integers into LEGO bricks. For simple models, this table can be made manually using <code><a href="https://www.rdocumentation.org/packages/base/topics/data.frame">data.frame()</a></code> or <code><a href="https://tibble.tidyverse.org/reference/tribble.html">tibble::tribble()</a></code>. For more advanced models, it’s recommended you use MS Excel or a .csv file. The left-most column in the table is associated with the Level or z-axis of the model. <code><a href="reference/bricks_from_excel.html">bricks_from_excel()</a></code> is a wrapper function to more easily build models designed using a Microsoft Excel template. Please see this repo: <a href="https://github.com/ryantimpe/brickr_toybox">brickr toybox</a>.</p></li>
|
||
<li><p><code><a href="reference/bricks_from_coords.html">bricks_from_coords()</a></code> takes a data frame with <code>x</code>, <code>y</code>, & <code>z</code> integer values, and <code>Color</code> columns, where each combination of x, y, & z is a point in 3-dimensional space. Color must be an official LEGO color name from <code><a href="reference/build_colors.html">build_colors()</a></code>. This format is much more flexible than <code><a href="reference/bricks_from_table.html">bricks_from_table()</a></code> and allows the programmatic development of 3D models.</p></li>
|
||
<li><p><code><a href="reference/bricks_from_mosaic.html">bricks_from_mosaic()</a></code> converts a 2D <a href="#mosaics">mosaic</a> object from an image into 3D LEGO models, respectively. <code><a href="reference/bricks_from_rayshader.html">bricks_from_rayshader()</a></code> creates a LEGO model from the same input as <code><a href="https://www.rdocumentation.org/packages/rayshader/topics/plot_3d">rayshader::plot_3d()</a></code>.</p></li>
|
||
</ul>
|
||
<p>Pass the output from any <code>bricks_from_*()</code> function to <code><a href="reference/build_bricks.html">build_bricks()</a></code> to see the 3D model. The <code>brick_res</code> option allows for higher resolution bricks in ‘hd’ or ‘uhd’, which will take longer to render.</p>
|
||
<div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb3-1" title="1"><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/library">library</a></span>(brickr)</a>
|
||
<a class="sourceLine" id="cb3-2" title="2"></a>
|
||
<a class="sourceLine" id="cb3-3" title="3"><span class="co">#This is a brick</span></a>
|
||
<a class="sourceLine" id="cb3-4" title="4">brick <-<span class="st"> </span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/data.frame">data.frame</a></span>(</a>
|
||
<a class="sourceLine" id="cb3-5" title="5"> <span class="dt">Level=</span><span class="st">"A"</span>,</a>
|
||
<a class="sourceLine" id="cb3-6" title="6"> <span class="dt">X1 =</span> <span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/rep">rep</a></span>(<span class="dv">3</span>,<span class="dv">4</span>), <span class="co">#The number 3 is the brickrID for 'bright red'</span></a>
|
||
<a class="sourceLine" id="cb3-7" title="7"> <span class="dt">X2 =</span> <span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/rep">rep</a></span>(<span class="dv">3</span>,<span class="dv">4</span>)</a>
|
||
<a class="sourceLine" id="cb3-8" title="8">)</a>
|
||
<a class="sourceLine" id="cb3-9" title="9"></a>
|
||
<a class="sourceLine" id="cb3-10" title="10">brick <span class="op">%>%</span><span class="st"> </span></a>
|
||
<a class="sourceLine" id="cb3-11" title="11"><span class="st"> </span><span class="kw"><a href="reference/bricks_from_table.html">bricks_from_table</a></span>() <span class="op">%>%</span><span class="st"> </span></a>
|
||
<a class="sourceLine" id="cb3-12" title="12"><span class="st"> </span><span class="kw"><a href="reference/build_bricks.html">build_bricks</a></span>(<span class="dt">brick_res =</span> <span class="st">"uhd"</span>)</a>
|
||
<a class="sourceLine" id="cb3-13" title="13"></a>
|
||
<a class="sourceLine" id="cb3-14" title="14">rayshader<span class="op">::</span><span class="kw"><a href="https://www.rdocumentation.org/packages/rayshader/topics/render_snapshot">render_snapshot</a></span>( <span class="dt">clear =</span> <span class="ot">TRUE</span>)</a></code></pre></div>
|
||
<p><img src="index_files/figure-html/bricks_1-1.png" width="288"></p>
|
||
<div id="stacking-bricks" class="section level3">
|
||
<h3 class="hasAnchor">
|
||
<a href="#stacking-bricks" class="anchor"></a>Stacking bricks</h3>
|
||
<p>The Level column in the input table determines the elevation of the bricks. <code><a href="reference/bricks_from_table.html">bricks_from_table()</a></code> will convert alphanumeric levels into a z coordinate.</p>
|
||
<p>For larger models, use <code><a href="https://tibble.tidyverse.org/reference/tribble.html">tibble::tribble()</a></code> to more easily visualize the model. For very large models, use a csv or Excel.</p>
|
||
<div class="sourceCode" id="cb4"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb4-1" title="1">my_first_model <-<span class="st"> </span>tibble<span class="op">::</span><span class="kw"><a href="https://tibble.tidyverse.org/reference/tribble.html">tribble</a></span>(</a>
|
||
<a class="sourceLine" id="cb4-2" title="2"> <span class="op">~</span>Level, <span class="op">~</span>X1, <span class="op">~</span>X2, <span class="op">~</span>X3, <span class="op">~</span>x4, <span class="op">~</span>x5, <span class="op">~</span>X6, <span class="op">~</span>x7, <span class="op">~</span>x8,</a>
|
||
<a class="sourceLine" id="cb4-3" title="3"> <span class="st">"A"</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-4" title="4"> <span class="st">"A"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-5" title="5"> <span class="st">"A"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-6" title="6"> <span class="st">"A"</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-7" title="7"> <span class="st">"B"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-8" title="8"> <span class="st">"B"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-9" title="9"> <span class="st">"B"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-10" title="10"> <span class="st">"B"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-11" title="11"> <span class="st">"C"</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-12" title="12"> <span class="st">"C"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-13" title="13"> <span class="st">"C"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-14" title="14"> <span class="st">"C"</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-15" title="15"> <span class="st">"D"</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>,</a>
|
||
<a class="sourceLine" id="cb4-16" title="16"> <span class="st">"D"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-17" title="17"> <span class="st">"D"</span>, <span class="dv">1</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">1</span>,</a>
|
||
<a class="sourceLine" id="cb4-18" title="18"> <span class="st">"D"</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>,</a>
|
||
<a class="sourceLine" id="cb4-19" title="19"> <span class="st">"E"</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>,</a>
|
||
<a class="sourceLine" id="cb4-20" title="20"> <span class="st">"E"</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>,</a>
|
||
<a class="sourceLine" id="cb4-21" title="21"> <span class="st">"E"</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>, <span class="dv">2</span>,</a>
|
||
<a class="sourceLine" id="cb4-22" title="22"> <span class="st">"E"</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span>, <span class="dv">0</span></a>
|
||
<a class="sourceLine" id="cb4-23" title="23">)</a>
|
||
<a class="sourceLine" id="cb4-24" title="24"></a>
|
||
<a class="sourceLine" id="cb4-25" title="25">brick_colors <-<span class="st"> </span>tibble<span class="op">::</span><span class="kw"><a href="https://tibble.tidyverse.org/reference/tribble.html">tribble</a></span>(</a>
|
||
<a class="sourceLine" id="cb4-26" title="26"> <span class="op">~</span><span class="st">`</span><span class="dt">.value</span><span class="st">`</span>, <span class="op">~</span>Color,</a>
|
||
<a class="sourceLine" id="cb4-27" title="27"> <span class="dv">1</span>, <span class="st">"Bright blue"</span>,</a>
|
||
<a class="sourceLine" id="cb4-28" title="28"> <span class="dv">2</span>, <span class="st">"Dark orange"</span></a>
|
||
<a class="sourceLine" id="cb4-29" title="29">)</a>
|
||
<a class="sourceLine" id="cb4-30" title="30"> </a>
|
||
<a class="sourceLine" id="cb4-31" title="31">my_first_model <span class="op">%>%</span><span class="st"> </span></a>
|
||
<a class="sourceLine" id="cb4-32" title="32"><span class="st"> </span><span class="kw"><a href="reference/bricks_from_table.html">bricks_from_table</a></span>(brick_colors) <span class="op">%>%</span><span class="st"> </span></a>
|
||
<a class="sourceLine" id="cb4-33" title="33"><span class="st"> </span><span class="kw"><a href="reference/build_bricks.html">build_bricks</a></span>(<span class="dt">theta =</span> <span class="dv">210</span>, <span class="dt">brick_res =</span> <span class="st">"uhd"</span>)</a>
|
||
<a class="sourceLine" id="cb4-34" title="34"></a>
|
||
<a class="sourceLine" id="cb4-35" title="35">rayshader<span class="op">::</span><span class="kw"><a href="https://www.rdocumentation.org/packages/rayshader/topics/render_snapshot">render_snapshot</a></span>(<span class="dt">clear =</span> <span class="ot">TRUE</span>)</a></code></pre></div>
|
||
<p><img src="index_files/figure-html/bricks_5-1.png" width="384"></p>
|
||
</div>
|
||
<div id="programmatically-build-models" class="section level3">
|
||
<h3 class="hasAnchor">
|
||
<a href="#programmatically-build-models" class="anchor"></a>Programmatically build models</h3>
|
||
<p>Use <code><a href="reference/bricks_from_coords.html">bricks_from_coords()</a></code> to programmatically build 3D LEGO models instead of manually drawing them in a spreadsheet or table. Here you must provide whole number coordinates for x, y, and z, along with an official LEGO color name for each point.</p>
|
||
<div class="sourceCode" id="cb5"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb5-1" title="1">radius <-<span class="st"> </span><span class="dv">4</span></a>
|
||
<a class="sourceLine" id="cb5-2" title="2">sphere_coords <-<span class="st"> </span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/expand.grid">expand.grid</a></span>(</a>
|
||
<a class="sourceLine" id="cb5-3" title="3"> <span class="dt">x =</span> <span class="dv">1</span><span class="op">:</span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/Round">round</a></span>((radius<span class="op">*</span><span class="fl">2.5</span>)),</a>
|
||
<a class="sourceLine" id="cb5-4" title="4"> <span class="dt">y =</span> <span class="dv">1</span><span class="op">:</span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/Round">round</a></span>((radius<span class="op">*</span><span class="fl">2.5</span>)),</a>
|
||
<a class="sourceLine" id="cb5-5" title="5"> <span class="dt">z =</span> <span class="dv">1</span><span class="op">:</span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/Round">round</a></span>((radius<span class="op">/</span>(<span class="dv">6</span><span class="op">/</span><span class="dv">5</span>)<span class="op">*</span><span class="fl">2.5</span>)) <span class="co">#A brick is 6/5 taller than it is wide/deep</span></a>
|
||
<a class="sourceLine" id="cb5-6" title="6">) <span class="op">%>%</span></a>
|
||
<a class="sourceLine" id="cb5-7" title="7"><span class="st"> </span><span class="kw">mutate</span>(</a>
|
||
<a class="sourceLine" id="cb5-8" title="8"> <span class="co">#Distance of each coordinate from center</span></a>
|
||
<a class="sourceLine" id="cb5-9" title="9"> <span class="dt">dist =</span> (((x<span class="op">-</span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/mean">mean</a></span>(x))<span class="op">^</span><span class="dv">2</span> <span class="op">+</span><span class="st"> </span>(y<span class="op">-</span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/mean">mean</a></span>(y))<span class="op">^</span><span class="dv">2</span> <span class="op">+</span><span class="st"> </span>(z<span class="op">-</span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/mean">mean</a></span>(z))<span class="op">^</span><span class="dv">2</span>)<span class="op">^</span>(<span class="dv">1</span><span class="op">/</span><span class="dv">2</span>)),</a>
|
||
<a class="sourceLine" id="cb5-10" title="10"> <span class="dt">Color =</span> <span class="kw">case_when</span>(</a>
|
||
<a class="sourceLine" id="cb5-11" title="11"> <span class="co">#Yellow stripes on the surface with a 2to4 thickness</span></a>
|
||
<a class="sourceLine" id="cb5-12" title="12"> <span class="kw">between</span>(dist, (radius<span class="dv">-1</span>), radius) <span class="op">&</span><span class="st"> </span>(x<span class="op">+</span>y<span class="op">+</span>z) <span class="op">%%</span><span class="st"> </span><span class="dv">6</span> <span class="op">%in%</span><span class="st"> </span><span class="dv">0</span><span class="op">:</span><span class="dv">1</span> <span class="op">~</span><span class="st"> "Bright yellow"</span>,</a>
|
||
<a class="sourceLine" id="cb5-13" title="13"> <span class="co">#Otherwise, sphere is blue</span></a>
|
||
<a class="sourceLine" id="cb5-14" title="14"> dist <span class="op"><=</span><span class="st"> </span>radius <span class="op">~</span><span class="st"> "Bright blue"</span></a>
|
||
<a class="sourceLine" id="cb5-15" title="15"> ))</a>
|
||
<a class="sourceLine" id="cb5-16" title="16"></a>
|
||
<a class="sourceLine" id="cb5-17" title="17">sphere_coords <span class="op">%>%</span><span class="st"> </span></a>
|
||
<a class="sourceLine" id="cb5-18" title="18"><span class="st"> </span><span class="kw"><a href="reference/bricks_from_coords.html">bricks_from_coords</a></span>() <span class="op">%>%</span><span class="st"> </span></a>
|
||
<a class="sourceLine" id="cb5-19" title="19"><span class="st"> </span><span class="kw"><a href="reference/build_bricks.html">build_bricks</a></span>(<span class="dt">brick_res =</span> <span class="st">"uhd"</span>, <span class="dt">phi =</span> <span class="dv">30</span>, <span class="dt">theta =</span> <span class="dv">30</span>)</a>
|
||
<a class="sourceLine" id="cb5-20" title="20"></a>
|
||
<a class="sourceLine" id="cb5-21" title="21">rayshader<span class="op">::</span><span class="kw"><a href="https://www.rdocumentation.org/packages/rayshader/topics/render_snapshot">render_snapshot</a></span>(<span class="dt">clear =</span> <span class="ot">TRUE</span>)</a></code></pre></div>
|
||
<p><img src="index_files/figure-html/bricks_6-1.png" width="480"></p>
|
||
</div>
|
||
<div id="examples" class="section level3">
|
||
<h3 class="hasAnchor">
|
||
<a href="#examples" class="anchor"></a>Examples</h3>
|
||
<p>More examples using <code><a href="reference/bricks_from_table.html">bricks_from_table()</a></code> and <code><a href="reference/bricks_from_coords.html">bricks_from_coords()</a></code> can be found at the links below.</p>
|
||
<ul>
|
||
<li>
|
||
<a href="https://gist.github.com/ryantimpe/a784beaa4f798f57010369329d46ce71"><strong>Get started</strong></a> with the framework for building a brick from scratch.</li>
|
||
<li>
|
||
<a href="https://gist.github.com/ryantimpe/ceab2ed6b8a4737077280fc9b0d1c886"><strong>Build an owl</strong></a> with <code><a href="reference/bricks_from_table.html">bricks_from_table()</a></code> by manually placing each brick.</li>
|
||
<li>Generate a punny <a href="https://gist.github.com/ryantimpe/a7363a5e99dceabada150a43925beec7"><strong>random forest model</strong></a> using <code><a href="reference/bricks_from_coords.html">bricks_from_coords()</a></code> and {purrr}.</li>
|
||
<li>
|
||
<a href="https://github.com/ryantimpe/brickr_toybox"><strong>brickr toybox</strong></a> repo for tools and resources to get started.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div id="charts" class="section level2">
|
||
<h2 class="hasAnchor">
|
||
<a href="#charts" class="anchor"></a>Charts</h2>
|
||
<p>brickr includes functions to render <a href="https://ggplot2.tidyverse.org/">ggplot2</a> bar charts as bricks with LEGO color themes. The main function is <code><a href="reference/geom_brick_col.html">geom_brick_col()</a></code>, which is the brickr equivalent of <code>geom_col()</code>. Additional functions are highly recommended to ensure that proper the chart is rendered in the proper functions and proportions.</p>
|
||
<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" title="1">df <-<span class="st"> </span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/data.frame">data.frame</a></span>(<span class="dt">trt =</span> <span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/c">c</a></span>(<span class="st">"a"</span>, <span class="st">"b"</span>, <span class="st">"c"</span>), <span class="dt">outcome =</span> <span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/c">c</a></span>(<span class="fl">2.3</span>, <span class="fl">1.9</span>, <span class="fl">3.2</span>))</a>
|
||
<a class="sourceLine" id="cb6-2" title="2"></a>
|
||
<a class="sourceLine" id="cb6-3" title="3"><span class="co">#For official LEGO colors, use with scale_fill_brick and theme_brick.</span></a>
|
||
<a class="sourceLine" id="cb6-4" title="4"><span class="kw">ggplot</span>(df, <span class="kw">aes</span>(trt, outcome)) <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb6-5" title="5"><span class="st"> </span><span class="kw"><a href="reference/geom_brick_col.html">geom_brick_col</a></span>(<span class="kw">aes</span>(<span class="dt">fill =</span> trt)) <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb6-6" title="6"><span class="st"> </span><span class="kw"><a href="reference/scale_fill_brick.html">scale_fill_brick</a></span>() <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb6-7" title="7"><span class="st"> </span><span class="kw"><a href="reference/coord-brick.html">coord_brick</a></span>() <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb6-8" title="8"><span class="st"> </span><span class="kw"><a href="reference/theme_brick.html">theme_brick</a></span>()</a></code></pre></div>
|
||
<p><img src="index_files/figure-html/geom_brick-1.png" width="384"></p>
|
||
<p>Both <code><a href="reference/scale_fill_brick.html">scale_fill_brick()</a></code> and <code><a href="reference/theme_brick.html">theme_brick()</a></code> take an input ‘brick_theme’, which ensures all colors match official LEGO brick colors. See <code><a href="reference/build_themes.html">build_themes()</a></code> for a sample of all available brick theme.</p>
|
||
<div class="sourceCode" id="cb7"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb7-1" title="1">df <-<span class="st"> </span><span class="kw"><a href="https://www.rdocumentation.org/packages/base/topics/data.frame">data.frame</a></span>(<span class="dt">trt =</span> letters[<span class="dv">1</span><span class="op">:</span><span class="dv">6</span>], <span class="dt">outcome =</span> <span class="kw"><a href="https://www.rdocumentation.org/packages/stats/topics/Normal">rnorm</a></span>(<span class="dv">6</span>, <span class="dt">mean =</span> <span class="dv">5</span>, <span class="dt">sd =</span> <span class="dv">2</span>))</a>
|
||
<a class="sourceLine" id="cb7-2" title="2"></a>
|
||
<a class="sourceLine" id="cb7-3" title="3">use_theme <-<span class="st"> "hp"</span></a>
|
||
<a class="sourceLine" id="cb7-4" title="4"></a>
|
||
<a class="sourceLine" id="cb7-5" title="5"><span class="kw">ggplot</span>(df, <span class="kw">aes</span>(trt, outcome)) <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb7-6" title="6"><span class="st"> </span><span class="kw"><a href="reference/geom_brick_col.html">geom_brick_col</a></span>(<span class="kw">aes</span>(<span class="dt">fill =</span> trt), <span class="dt">two_knob =</span> F) <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb7-7" title="7"><span class="st"> </span><span class="kw"><a href="reference/scale_fill_brick.html">scale_fill_brick</a></span>(use_theme) <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb7-8" title="8"><span class="st"> </span><span class="kw"><a href="reference/coord-brick.html">coord_brick_flip</a></span>() <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb7-9" title="9"><span class="st"> </span><span class="kw"><a href="reference/theme_brick.html">theme_brick</a></span>(use_theme) <span class="op">+</span></a>
|
||
<a class="sourceLine" id="cb7-10" title="10"><span class="st"> </span><span class="kw">theme</span>(<span class="dt">legend.position =</span> <span class="st">"none"</span>)</a></code></pre></div>
|
||
<p><img src="index_files/figure-html/geom_brick2-1.png" width="384"></p>
|
||
</div>
|
||
<div id="irl" class="section level2">
|
||
<h2 class="hasAnchor">
|
||
<a href="#irl" class="anchor"></a>IRL</h2>
|
||
<p>Additional functions assist in the translation of brickr objects into actual LEGO bricks.</p>
|
||
<div id="instructions" class="section level3">
|
||
<h3 class="hasAnchor">
|
||
<a href="#instructions" class="anchor"></a>Instructions</h3>
|
||
<p>Use <code><a href="reference/build_instructions.html">build_instructions()</a></code> to break the mosaics and 3D models into easier-to-read steps for building the set. This defaults to 6 steps, but passing any integer value will generate that many steps.</p>
|
||
<div class="sourceCode" id="cb8"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb8-1" title="1">mosaic1 <span class="op">%>%</span><span class="st"> </span><span class="kw"><a href="reference/build_instructions.html">build_instructions</a></span>(<span class="dv">9</span>)</a></code></pre></div>
|
||
<p><img src="index_files/figure-html/m1_instructions-1.png" width="768"></p>
|
||
</div>
|
||
<div id="piece-list-and-count" class="section level3">
|
||
<h3 class="hasAnchor">
|
||
<a href="#piece-list-and-count" class="anchor"></a>Piece list and count</h3>
|
||
<p>Use <code><a href="reference/build_pieces.html">build_pieces()</a></code> to generate a graphic and count of all required plates or bricks (for stacked mosaics). These are sorted by color and size for easy purchase on LEGO.com’s <a href="https://shop.lego.com/en-US/Pick-a-Brick">Pick-a-Brick</a> section using the advanced search option. Alternatively, use <code>table_pieces()</code> to produce a data frame table of all required bricks.</p>
|
||
<div class="sourceCode" id="cb9"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb9-1" title="1">mosaic1 <span class="op">%>%</span><span class="st"> </span><span class="kw"><a href="reference/build_pieces.html">build_pieces</a></span>()</a></code></pre></div>
|
||
<p><img src="index_files/figure-html/m1_pieces-1.png" width="768"></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
|
||
<div class="links">
|
||
<h2>Links</h2>
|
||
<ul class="list-unstyled">
|
||
<li>Browse source code at <br><a href="https://github.com/ryantimpe/brickr">https://github.com/ryantimpe/brickr</a>
|
||
</li>
|
||
<li>Report a bug at <br><a href="https://github.com/ryantimpe/brickr/issues">https://github.com/ryantimpe/brickr/issues</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="license">
|
||
<h2>License</h2>
|
||
<ul class="list-unstyled">
|
||
<li><a href="LICENSE.html">Full license</a></li>
|
||
<li><small><a href="https://www.r-project.org/Licenses/GPL-3">GPL-3</a></small></li>
|
||
</ul>
|
||
</div>
|
||
<div class="developers">
|
||
<h2>Developers</h2>
|
||
<ul class="list-unstyled">
|
||
<li>Ryan Timpe <br><small class="roles"> Author, maintainer </small> </li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="dev-status">
|
||
<h2>Dev status</h2>
|
||
<ul class="list-unstyled">
|
||
<li><a href="https://www.tidyverse.org/lifecycle/#maturing"><img src="https://img.shields.io/badge/lifecycle-maturing-blue.svg" alt="Lifecycle: maturing"></a></li>
|
||
<li><a href="https://travis-ci.org/ryantimpe/brickr"><img src="https://travis-ci.org/ryantimpe/brickr.svg?branch=master" alt="Travis build status"></a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<footer><div class="copyright">
|
||
<p>Developed by Ryan Timpe.</p>
|
||
</div>
|
||
|
||
<div class="pkgdown">
|
||
<p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.3.0.</p>
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
</body>
|
||
</html>
|