El siguiente conjunto de datos contiene tres columnas donde la primera son los valores de la variable del eje X, la segunda los del eje Y y la tercera la distancia euclídea entre los puntos y el centro del gráfico, que se corresponde con el punto (200, 200).
# Datos
set.seed(1)
x <- sample(1:400, size = 100)
y <- sample(1:400, size = 100)
dist <- sqrt((x - 200) ^ 2 + (y - 200) ^ 2)
df <- data.frame(x, y, dist = dist)
stat_voronoi
La función stat_voronoi se puede utilizar para crear un diagrama de Voronoi, pasando las variables x e y a la función aes y usando stat_voronoi(geom = "path").
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
ggplot(df, aes(x, y)) +
stat_voronoi(geom = "path")

Observaciones
También puedes agregar las observaciones haciendo uso de geom_point.
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
ggplot(df, aes(x, y)) +
stat_voronoi(geom = "path") +
geom_point()

Personalización de las líneas
Ten en cuenta que puedes cambiar el estilo de las líneas con los argumentos color, lwd y linetype.
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
ggplot(df, aes(x, y)) +
stat_voronoi(geom = "path",
color = 4, # Color de las líneas
lwd = 0.7, # Grosor de las líneas
linetype = 1) + # Tipo de líneas
geom_point()


Puedes pasar una variable al argumento fill de la función aes para crear un mapa de calor de Voronoi. Para este propósito tendrás que utilizar la función geom_voronoi.
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
ggplot(df, aes(x, y, fill = dist)) +
geom_voronoi() +
geom_point()

El camino (las líneas) del diagrama se puede agregar añadiendo stat_voronoi(geom = "path").
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
ggplot(df, aes(x, y, fill = dist)) +
geom_voronoi() +
stat_voronoi(geom = "path") +
geom_point()

La transparencia del color se puede establecer con el argumento alpha de la función geom_voronoi.
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
ggplot(df, aes(x, y, fill = dist)) +
geom_voronoi(alpha = 0.75) +
stat_voronoi(geom = "path") +
geom_point()

Además, si quieres cambiar el color para el mapa de calor puedes usar scale_fill_gradient, indicando un color para el valor más bajo y otro para el más alto como en el ejemplo siguiente.
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
ggplot(df, aes(x, y, fill = dist)) +
geom_voronoi() +
stat_voronoi(geom = "path") +
geom_point() +
scale_fill_gradient(low = "#F9F9F9",
high = "#312271")

Ten en cuenta que si quieres eliminar la leyenda puedes establecer legend.position = "none" dentro de la función theme. También puedes establecerla en otra posición.
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
ggplot(df, aes(x, y, fill = dist)) +
geom_voronoi() +
stat_voronoi(geom = "path") +
geom_point() +
theme(legend.position = "none")
Puedes darle una forma al diagrama pasando un data frame al argumento outline de la función geom_voronoi, siendo la primera columna la longitud, la segunda la latitud y la tercera una columna representando grupos.
# install.packages("ggvoronoi")
# install.packages("ggplot2")
library(ggvoronoi)
library(ggplot2)
# Círculo
s <- seq(0, 2 * pi, length.out = 3000)
circulo <- data.frame(x = 120 * (1 + cos(s)),
y = 120 * (1 + sin(s)),
grupo = rep(1, 3000))
ggplot(df, aes(x, y, fill = dist)) +
geom_voronoi(outline = circulo,
color = 1, size = 0.1) +
scale_fill_gradient(low = "#B9DDF1",
high = "#2A5783",
guide = FALSE) +
theme_void() +
coord_fixed()

También te puede interesar