Open-source project
aschinchon/mandalas-colored avatar
aschinchon/mandalas-colored

Mandalas Colored: An R Experiment That Turns Voronoi Tessellation into Art

An R experiment about Voronoi tesselation to create colored mandalas

51 stars11 forksRMIT

At a glance

What is it?
A small R project that generates colored mandalas from Voronoi tessellation, with a Docker wrapper for easy runs. It is a teaching tool, not a production library.
Who is it for?
Adopt this project if you teach R graphics, Voronoi diagrams, or recursion, or if you want a playful way to generate decorative images. Skip it if you need a maintained library, precise geometric control, or production-grade output.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Probably not. The repository last received commits 102 months ago, on April 24, 2018.
What is it written in?
Mainly R, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 7, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A Voronoi Tessellation Experiment for R Learners

aschinchon/mandalas-colored is an R script that produces colored mandalas from Voronoi tessellation. The README frames it as an experiment, not a package. It is aimed at people who want to learn Voronoi diagrams, recursion, and ggplot by making images. The project is a single script, mandalas_colored.R, plus Docker support. It is not a general-purpose plotting library. It is a workshop in a file. If you teach R or want to explore geometric art, this is a useful starting point. If you need a robust mandala generator for a product, look elsewhere.

The Mechanism: Voronoi Cells, Recursion, and ColourLovers Palettes

The core idea is to generate a Voronoi tessellation and then color the cells. Voronoi tessellation divides a plane into regions based on distance to a set of points. The project uses the deldir package to compute the tessellation. Recursion adds depth: the README mentions recursivity as a topic, and the --iter parameter controls the number of iterations. Each iteration likely subdivides or expands the pattern. Colors come from colourLovers palettes, which are fetched from the ColourLovers API. The ggplot2 package renders the final image. The data flow is: generate points, compute Voronoi cells, apply recursion, assign colors from a palette, and plot with ggplot. The exact algorithm is not in the README, but the parameters give hints.

Getting Started: Installing R Packages and Running the Script

To run the script directly, you need R and five packages: ggplot2, dplyr, deldir, colourlovers, and rlist. The README gives the install commands: install.packages("ggplot2"), install.packages("dplyr"), install.packages("deldir"), install.packages("colourlovers"), and install.packages("rlist"). After that, you open the script and run it. There is no documented command-line interface for the raw R script. The Docker route is more explicit. You build the image with docker build -t vanessa/mandalas . Then you can run it interactively with docker run -p 8787:8787 vanessa/mandalas --rstudio, which starts RStudio Server at localhost:8787 with username rstudio and password rstudio. For headless runs, you mount a host directory to /data and specify an output file.

Docker Parameters: Iterations, Radius, Points, and Output

The Docker image accepts four command-line options. --iter sets the number of iterations or depth. --radius controls the number of points, which influences the density of the tessellation. --points is described as a factor of expansion or compression, likely scaling the point distribution. --outfile names the output PNG file, which is saved to /data in the container. You must map a host folder to /data to retrieve the file. Example: docker run -v /tmp/outy:/data vanessa/mandalas --outfile pancakes.png. The README also shows a loop to generate ten mandalas with sequential filenames. These parameters are the only documented knobs. There is no mention of seed control, so each run may produce different random patterns. That is fine for art, but it means reproducibility is limited unless you modify the script.

A Genuine Limitation: It Is an Experiment, Not a Maintained Tool

The most obvious limitation is that this is a single experiment. The repository has no releases, no issue tracker mention, and the last push is unknown. The README points to a blog post for the full explanation, which suggests the code is a companion to a tutorial, not a standalone product. The dependency on colourlovers means you need an internet connection to fetch palettes, and the API could change or disappear. The script likely has hardcoded parameters or expects a specific R environment. The Docker image is built by a contributor, not the original author, so it may lag behind the script. If you want a reliable, documented library for Voronoi art, this is the wrong tool. It is a starting point, not a destination.

Alternative: Write Your Own Voronoi Plot with deldir and ggplot2

A practical alternative is to build your own script using the same underlying packages. The project uses deldir for Voronoi computation and ggplot2 for rendering. You could replicate the core functionality in a few dozen lines: generate random points, call deldir::deldir() to get tiles, convert to a data frame, and plot with ggplot2::geom_polygon(). You would then control recursion and coloring yourself. This approach avoids the dependency on colourlovers and the Docker wrapper. It also gives you full control over reproducibility and output formats. The difference is that mandalas-colored is a ready-made experiment, while a custom script is more work but more flexible. If you are teaching, the existing project saves time. If you are building a tool, custom code is better.

Maintenance and License: What You Need to Know

The project is licensed under MIT, which permits reuse, modification, and distribution with attribution. There is no indication of active maintenance: no releases, no recent commits visible, and the last push is unknown. The Docker image is hosted on Docker Hub under the name vanessa/mandalas, but its update frequency is not documented. The R packages it depends on are all on CRAN, so they are likely to remain available, but colourlovers may break if the ColourLovers API changes. The cost of maintenance is low for a single script, but you should be prepared to fix compatibility issues with newer R versions or ggplot2 updates. The project is a snapshot of an experiment, not a living codebase.

Editorial conclusion

Adopt this project if you teach R graphics, Voronoi diagrams, or recursion, or if you want a playful way to generate decorative images. Skip it if you need a maintained library, precise geometric control, or production-grade output. Before using, verify that the R packages install cleanly on your R version, and check the Docker image's base system for compatibility. The project is an experiment, so expect to adapt the script for your own needs, not to consume a stable API.

Frequently asked questions

Which colors are used for mandalas in mandalas-colored?

There is no fixed palette. The project draws colour schemes from the colourLovers service and applies them to the generated geometry, so the colours are whatever palettes that service returns rather than a set the project defines.

What do the colors in a mandala mean for mandalas-colored?

The project assigns no meaning to them. Colour is a palette chosen from an external service and applied to the output, which is why the README frames the result as something you can recolour rather than as a symbolic object.

Which R packages does mandalas-colored need?

Five: ggplot2, dplyr, deldir, colourlovers and rlist. The Docker image installs only deldir, colourlovers and rlist, because the base image it builds from already provides the tidyverse packages. Note that the package is installed under its lowercase name even though the prose capitalises it.

How do I run mandalas-colored headlessly and get a PNG?

Create a directory on the host, bind it to the container's data path, and pass an output filename such as --outfile pancakes.png. The container writes the image into that directory. The other options are the number of iterations for depth, the radius, and a points factor for expansion or compression.

Official sources

  1. Official README
  2. Project repository
  3. README
  4. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/aschinchon-mandalas-colored.svg)](https://hysenlabs.com/projects/aschinchon-mandalas-colored)