The goal of voronoise is to make pretty pictures. It is a very minor tweak on the voronoi tesselations provided by the ggforce
package. You can install the development version of voronoise from GitHub with:
remotes::install_github("djnavarro/voronoise")
Create a tibble with columns specifying the x and y coordinates, and the colours to be associated with the corresponding Voronoi cell
library(voronoise) #> Loading required package: ggplot2 #> Loading required package: ggforce set.seed(1) dat <- tibble::tibble( x = runif(n = 50, min = .1, max = .9), y = runif(n = 50, min = .1, max = .9), shade = sample(colours(), size = 50, replace = TRUE) ) dat #> # A tibble: 50 x 3 #> x y shade #> <dbl> <dbl> <chr> #> 1 0.312 0.482 tan #> 2 0.398 0.789 grey43 #> 3 0.558 0.450 plum4 #> 4 0.827 0.296 rosybrown #> 5 0.261 0.157 grey26 #> 6 0.819 0.180 springgreen4 #> 7 0.856 0.353 gold3 #> 8 0.629 0.515 grey68 #> 9 0.603 0.630 navajowhite2 #> 10 0.149 0.425 tomato #> # … with 40 more rows
The voronoise_base()
function initialises a ggplot object
voronoise_base(dat)
The default behaviour of geom_voronoise()
is identical to ggforce::geom_voronoi_tile()
with some parameter values changed. It does not perturb the location of any of the tiles:
voronoise_base(dat) + geom_voronoise(fill = "antiquewhite2")
To perturb the tiles we need to pass it a perturb
function:
voronoise_base(dat) + geom_voronoise(fill = "antiquewhite2") + geom_voronoise(perturb = perturb_uniform(.2))
Note that perturb_uniform()
returns a function. The voronoise package comes with a couple of handy functions that will create custom perturbing functions. For example:
voronoise_base(dat) + geom_voronoise(fill = "antiquewhite2") + geom_voronoise(perturb = perturb_float(-90))
An example using some more settings:
set.seed(1) voronoise_base( data = voronoise_data(100, viridis::magma(10)), background = "skyblue3" ) + geom_voronoise(fill = "skyblue2") + geom_voronoise( perturb = perturb_float( angles = c(0, 90, 180), noise = c(2, 1) ) )