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)
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)
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)
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)
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
.
# 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.
# 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"))
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)
También te puede interesar