Gráfico de dispersión conectado con geom_path

geom_path

Dadas dos variables en un data frame puedes dibujar el camino que recorren con geom_path.

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

# Datos
x <- c(1, 2, 3, 4, 5, 4, 7, 8, 9)
y <- c(12, 16, 14, 18, 16, 13, 15, 20, 22)
df <- data.frame(x, y)

# Gráfico dispersión conectado
ggplot(df, aes(x = x, y = y)) +
  geom_path()

Variables conectadas en ggplot2

Observaciones

Puedes resaltar los valores con geom_point.

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

# Datos
x <- c(1, 2, 3, 4, 5, 4, 7, 8, 9)
y <- c(12, 16, 14, 18, 16, 13, 15, 20, 22)
df <- data.frame(x, y)

# Gráfico dispersión conectado
ggplot(df, aes(x = x, y = y)) +
  geom_path() +
  geom_point(size = 2)

Gráfico de dispersión conectado con líneas en R

Etiquetando observaciones

Puedes etiquetar cada observación haciendo uso de geom_text. En este ejemplo vamos a añadir unas fechas.

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

# Datos
x <- c(1, 2, 3, 4, 5, 4, 7, 8, 9)
y <- c(12, 16, 14, 18, 16, 13, 15, 20, 22)
etiquetas <- 2013:2021
df <- data.frame(x, y, labels = etiquetas)

# Gráfico dispersión conectado
ggplot(df, aes(x = x, y = y)) +
  geom_path(color = 4) +
  geom_point(size = 2, color = 4) +
  geom_text(aes(label = etiquetas, x = x + 0.7, y = y))

Gráfico de dispersión con líneas y textos en ggplot2

Agregar flechas

Gráfico de dispersión conectado con flecha en ggplot2

Puedes pasar la función arrow al argumento arrow de la función geom_path para añadir una punta de flecha al final de la línea.

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

# Datos
x <- c(1, 2, 3, 4, 5, 4, 7, 8, 9)
y <- c(12, 16, 14, 18, 16, 13, 15, 20, 22)
etiquetas <- 2013:2021
df <- data.frame(x, y, labels = etiquetas)

# Gráfico dispersión conectado
ggplot(df, aes(x = x, y = y)) +
  geom_path(color = 4, arrow = arrow()) +
  geom_point(size = 2, color = 4) +
  geom_text(aes(label = etiquetas, x = x + 0.7, y = y))

Gráfico de dispersión conectado en ggplot2

Sin embargo, si usas geom_segment como se indica a continuación puedes añadir una flecha entre cada par de observaciones.

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

# Datos
x <- c(1, 2, 3, 4, 5, 4, 7, 8, 9)
y <- c(12, 16, 14, 18, 16, 13, 15, 20, 22)
etiquetas <- 2013:2021
df <- data.frame(x, y, labels = etiquetas)

# Gráfico dispersión conectado
ggplot(df, aes(x = x, y = y)) +
  geom_segment(aes(xend = c(tail(x, n = -1), NA), 
                   yend = c(tail(y, n = -1), NA)),
               arrow = arrow(length = unit(0.4, "cm")),
               color = 4) +
  geom_point(size = 2, color = 4) +
  geom_text(aes(label = etiquetas, x = x + 0.7, y = y))

También te puede interesar