Librería

deldir

Autor principal

Rolf Turner

Diagrama de Voronoi con deldir

Un diagrama de Voronoi (o polígonos de Thiessen) se puede crear en R base con las funciones que proporciona el paquete deldir. Dados dos vectores tendrás que calcular la triangulación de Delaunay con la función deldir y la teselación de Dirichlet (Voronoi) con la función tile.list. Luego, puedes dibujar el objeto resultante con el método S3 plot.tile.list.

# install.packages("deldir")
library(deldir)

# Datos
set.seed(1)
x <- runif(50)
y <- runif(50)

# Cálculo de la teselación de Voronoi y polígonos (tiles)
teselacion <- deldir(x, y)
tiles <- tile.list(teselacion)

plot(tiles, pch = 19)

Diagrama de Voronoi en R con deldir

Si quieres puedes agregar números en lugar de los puntos por defecto, estableciendo number = TRUE.

# install.packages("deldir")
library(deldir)

# Datos
set.seed(1)
x <- runif(50)
y <- runif(50)

# Cálculo de la teselación de Voronoi y polígonos (tiles)
teselacion <- deldir(x, y)
tiles <- tile.list(teselacion)

plot(tiles, pch = 19,
     number = TRUE)

Diagrama de Voronoi con números en R

Además, es posible eliminar los puntos estableciendo el argumento showpoints como FALSE.

# install.packages("deldir")
library(deldir)

# Datos
set.seed(1)
x <- runif(50)
y <- runif(50)

# Cálculo de la teselación de Voronoi y polígonos (tiles)
teselacion <- deldir(x, y)
tiles <- tile.list(teselacion)

plot(tiles,
     showpoints = FALSE)

Diagrama de Voronoi del paquete deldir sin puntos

Los límites de los polígonos se pueden cerrar con un rectángulo estableciendo close = TRUE.

# install.packages("deldir")
library(deldir)

# Datos
set.seed(1)
x <- runif(50)
y <- runif(50)

# Cálculo de la teselación de Voronoi y polígonos (tiles)
teselacion <- deldir(x, y)
tiles <- tile.list(teselacion)

plot(tiles,
     close = TRUE)

Diagrama de Voronoi cerrado en R

Color de fondo y de borde

Puedes pasar una paleta de colores al argumento fillcol de la función gráfica para colorear los polígonos. Ten en cuenta que también puedes cambiar el color de los puntos con col.pts o el color de los números con col.num. Esto último en caso de que number = TRUE.

Colores de la teselación de Voronoi en R

# install.packages("deldir")
library(deldir)

# Datos
set.seed(1)
x <- runif(50)
y <- runif(50)

# Cálculo de la teselación de Voronoi y polígonos (tiles)
teselacion <- deldir(x, y)
tiles <- tile.list(teselacion)

plot(tiles, pch = 19,
     fillcol = hcl.colors(50, "Purple-Yellow"))

El argumento border permite cambiar el color del borde de los polígonos, tal y como se muestra en el siguiente ejemplo.

Color del borde de los polígonos de Voronoi en R

# install.packages("deldir")
library(deldir)

# Datos
set.seed(1)
x <- runif(50)
y <- runif(50)

# Cálculo de la teselación de Voronoi y polígonos (tiles)
teselacion <- deldir(x, y)
tiles <- tile.list(teselacion)

plot(tiles, pch = 19,
     border = "white",
     fillcol = hcl.colors(50, "Sunset"))

Recortar forma

La función proporciona un método de recorte con clipp. El argumento necesita una lista con los componentes x e y proporcionando las coordenadas del polígono en el cual la teselación debería ser recortada. En el siguiente ejemplo estamos recortándola en forma de círculo.

# install.packages("deldir")
library(deldir)

# Datos
set.seed(1)
x <- runif(50)
y <- runif(50)

# Cálculo de la teselación de Voronoi y polígonos (tiles)
teselacion <- deldir(x, y)
tiles <- tile.list(teselacion)

# Círculo
s <- seq(0, 2 * pi, length.out = 3000)
circle <- list(x = 0.5 * (1 + cos(s)),
               y = 0.5 * (1 + sin(s)))

plot(tiles, pch = 19,
     col.pts = "white",
     border = "white",
     fillcol = hcl.colors(50, "viridis"),
     clipp = circle)

Voronoi con forma circular en R con deldir

También te puede interesar