Líneas de referencia, segmentos, curvas y flechas en ggplot2

El paquete ggplot2 proporciona varias funciones para agregar capas a los gráficos como líneas de referencia (funciones geom_vline, geom_hline y geom_abline), segmentos (geom_segment), curvas (geom_curve) y flechas (arrows). En este tutorial vamos a revisar los casos de uso más habituales de estas funciones.

Líneas verticales con geom_vline

Considerando que tienes un gráfico hecho con ggplot2 puedes crear una nueva capa con geom_vline para agregar una múltiples líneas verticales. Tan solo tienes que pasar un único valor o un vector numérico al argumento xintercept de la función donde quieres que se muestren las líneas.

Ten en cuenta que puedes personalizar argumentos gráficos como linetype (tipo de línea), color o lwd (grosor de la línea).

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_vline(xintercept = 0,
             linetype = 2,
             color = 2)

Línea vertical en ggplot2 con geom_vline

Agregar varias líneas a la vez

Ten en cuenta que todas las funciones de este tutorial permiten hacer esto.

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_vline(xintercept = -1:1,
             linetype = 1,
             color = 2:4)

Agregar múltiples líneas verticales en ggplot2 con geom_vline

Líneas horizontales con geom_hline

La función geom_hline se comporta de la misma manera que geom_vline. La única diferencia es que esta función agregará líneas horizontales, por lo que tendrás que especificar el argumento yintercept en lugar de xintercept.

Líneas horizontales en ggplot2 con geom_hline

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_hline(yintercept = -1:1,
             linetype = 3,
             color = 4,
             lwd = 1)

Líneas diagonales con geom_abline

La función geom_abline permite agregar líneas diagonales en base a un intercepto y una pendiente. El siguiente ejemplo muestra una línea diagonal con intercepto 0 y pendiente 1.

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_abline(intercept = 0,
              slope = 1)

Agregar una línea diagonal en ggplot2 con geom_abline

Segmentos con geom_segment

Las funciones anteriores se pueden usar para agregar líneas a los gráficos, pero no puedes crear segmentos con ellas. Para ello existe la función geom_segment, que permite especificar las coordinadas X e Y de inicio y fin del segmento deseado con x, y (inicio) y xend, yend (final), respectivamente.

Ten en cuenta que si pasas la función arrow al argumento arrow puedes crear una flecha. Mira los argumentos de la función arrow para obtener detalles adicionales de personalización.

Agregar segments en ggplot2 con geom_segment

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_segment(x = -1, y = 0,
               xend = 1, yend = 1,
               color = 2)

Añadir una flecha en ggplot2 con geom_segment y la función arrow

Agregar una flecha

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_segment(x = -2, y = 1,
               xend = 1, yend = -1,
               color = 2,
               arrow = arrow())

Curvas con geom_curve

La función geom_curve se comporta de la misma manera que geom_segment. La única diferencia es que esta función creará una curva en lugar de una línea recta. También puedes crear una flecha con esta función.

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_curve(x = -2, y = 1,
             xend = 1, yend = -1,
             color = 4)

Agregar una curva a ggplot2 con geom_curve

Ten en cuenta que puedes establecer el nuvel de curvatura pasando un valor al argumento curvature de la función. Un cero será una línea recta, valores negativos producirán curvas hacia la izquierda y valores positivos producirán curvas hacia la derecha.

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_curve(x = -2, y = 1,
             xend = 1, yend = -1,
             color = 4,
             curvature = -0.2) # Grado de curvatura

Cambiar el grado de curvatura de una curva en ggplot2

Agregar una flecha

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

# Datos
set.seed(1)
df <- data.frame(x = rnorm(100),
                 y = rnorm(100))

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_curve(x = -2, y = 1,
             xend = 1, yend = -1,
             color = 2,
             arrow = arrow())

Línea curvada en ggplot2

También te puede interesar