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