HOWTO · R

ylim() y xlim() en R

Aprende a controlar los límites de los ejes x e y en gráficos de R con ylim() y xlim(), ejemplos reproducibles y una explicación de sus diferencias en base graphics y ggplot2.

En esta página

En un gráfico de R, puedes usar xlim para controlar el intervalo horizontal y ylim para controlar el intervalo vertical. Si no indicas esos límites, las funciones de gráficos base suelen elegirlos a partir de los datos. Al fijarlos, puedes mantener la misma escala en varios gráficos o centrar la atención en un intervalo concreto.

¿Qué son ylim() y xlim()?

En los gráficos base de R, xlim y ylim son argumentos que se pasan a una función de trazado como plot(): xlim establece el intervalo del eje horizontal y ylim, el del eje vertical. Cada argumento recibe un vector numérico con el límite inferior primero y el superior después. El siguiente ejemplo usa los mismos datos para mostrar ambos límites a la vez:

x <- 1:10
y <- c(2, 3, 5, 7, 11, 13, 17, 19, 23, 29)

# Set both visible axis ranges in a base R scatter plot.
plot(x, y, xlim = c(2, 8), ylim = c(0, 30),
     xaxs = "i", yaxs = "i",
     main = "Selected ranges for x and y")

Los argumentos xlim y ylim proporcionan los intervalos solicitados. De forma predeterminada, los gráficos base añaden un pequeño margen en los extremos de cada eje. En este ejemplo, xaxs = "i" y yaxs = "i" desactivan esa ampliación, de modo que los límites visibles son exactamente de 2 a 8 en el eje x y de 0 a 30 en el eje y. Los puntos con valores x de 1, 9 y 10 quedan fuera del intervalo horizontal mostrado. El ejemplo usa gráficos base, incluidos en R, y no requiere instalar otro paquete. Se ejecutó correctamente y no produjo texto en la salida estándar ni en la salida de error estándar.

Al hablar de estas opciones, a menudo se escriben sus nombres como ylim() y xlim(). Sin embargo, al llamar a plot() se asignan los límites a los argumentos con nombre, por ejemplo, ylim = c(0, 30). Normalmente R calcula los intervalos a partir de los datos; especificarlos sirve, por ejemplo, para comparar gráficos con una escala común o para destacar una parte concreta del rango.

Estos argumentos pertenecen a funciones de gráficos base como plot(). No son parámetros universales de todos los sistemas de gráficos de R: ggplot2, en particular, ofrece una interfaz distinta, que se explica más adelante.

Cómo establecer los límites del eje Y con ylim()

Usa el argumento ylim para definir el intervalo vertical. Por ejemplo, plot(x, y, ylim = c(0, 30)) fija los límites del eje y en 0 y 30, mientras que plot() determina el intervalo del eje x a partir de los valores de x. Con el estilo predeterminado yaxs = "r", los gráficos base añaden un margen al intervalo mostrado. Si quieres que el eje llegue exactamente a los límites indicados, añade yaxs = "i". Expresa los límites en las mismas unidades que los valores de y. Un intervalo más amplio puede dejar espacio para las etiquetas o facilitar la comparación entre varios gráficos; uno más estrecho puede ayudar a apreciar las variaciones dentro de un tramo seleccionado.

En los gráficos base, los puntos y las partes de los objetos gráficos que quedan fuera de la región de trazado no se ven en ella. Elige los límites teniendo en cuenta los datos y la comparación que quieres que haga el lector. El gráfico puede conservar el intervalo de eje solicitado aunque algunas observaciones queden fuera de él; por tanto, no confundas lo que muestra el panel con el rango completo de los datos.

Cómo establecer los límites del eje X con xlim()

El argumento xlim controla el intervalo horizontal. Por ejemplo, plot(x, y, xlim = c(2, 8)) fija los límites del eje x en 2 y 8, mientras que plot() obtiene el intervalo del eje y a partir de los valores de y. El estilo predeterminado xaxs = "r" añade un margen al intervalo mostrado; usa xaxs = "i" para que el eje llegue exactamente a los límites indicados. Esto resulta útil para centrarse en un periodo, en un subconjunto de valores medidos o en una escala horizontal común para varios gráficos.

Al igual que con ylim, indica los límites en las unidades de la variable x y, para el eje creciente habitual, en orden de menor a mayor. Las observaciones fuera del intervalo visible no aparecen en la región de trazado. Contrasta el intervalo elegido con los datos originales para que una vista más enfocada no oculte el contexto que necesita el lector.

Combinar ylim() y xlim() para controlar mejor el gráfico

Pasa ambos argumentos a la misma llamada de gráficos base para definir el área rectangular visible, como en el ejemplo inicial. Elige xlim según los valores horizontales que quieras mostrar y ylim según los valores verticales. De forma predeterminada, los gráficos base amplían un poco cada intervalo; incluye xaxs = "i" y yaxs = "i" si quieres que los ejes terminen exactamente en los límites especificados. Al comparar gráficos, mantener los mismos límites facilita comparar sus escalas. Para explorar un solo gráfico, elige límites que conserven el contexto necesario para interpretar el patrón.

El comportamiento depende del sistema de gráficos. En ggplot2, los límites suelen indicarse mediante escalas, por ejemplo, scale_x_continuous(limits = c(2, 8)) y scale_y_continuous(limits = c(0, 30)). Las escalas excluyen los valores fuera de esos límites antes de dibujar las capas posteriores o calcular resúmenes estadísticos, lo que puede cambiar esos resultados. Si solo quieres ampliar la vista y conservar los datos para los cálculos, usa coord_cartesian(xlim = c(2, 8), ylim = c(0, 30)). Estas opciones de ggplot2 no son argumentos xlim e ylim de plot(); utiliza la interfaz correspondiente al sistema de gráficos de tu código.

Conclusión

En un gráfico base de R, usa xlim para el intervalo horizontal y ylim para el vertical; pasa ambos argumentos cuando quieras controlar los dos ejes. Escoge límites adecuados para la comparación y recuerda que las observaciones fuera del área visible pueden no aparecer. En ggplot2, elige entre los límites de escala y coord_cartesian() según quieras que los límites afecten a los datos del gráfico o solo a la vista.

Preguntas frecuentes

  1. ¿Puedo establecer los límites de ambos ejes en un solo gráfico? Sí. Incluye xlim = c(límite_inferior_x, límite_superior_x) y ylim = c(límite_inferior_y, límite_superior_y) en la misma llamada de gráficos base.

  2. ¿Cómo elijo los límites? Ten en cuenta las unidades y el rango de cada variable, las comparaciones que debe hacer el lector y si varios gráficos necesitan compartir una escala. Comprueba que la vista elegida conserve suficiente contexto para interpretar los datos.

  3. ¿Qué ocurre con los puntos que quedan fuera de los límites? En los gráficos base, quedan fuera de la región visible y no se muestran allí. En ggplot2, los límites de escala pueden excluir esos valores de los cálculos posteriores; coord_cartesian() amplía la vista y conserva los datos para esos cálculos.

  4. ¿xaxs y yaxs son alternativas a xlim y ylim? No. En los gráficos base, controlan la ampliación del eje, por ejemplo, el margen alrededor del intervalo trazado. Usa xlim y ylim para indicar los límites; el estilo de eje predeterminado puede ampliar el intervalo mostrado. Define xaxs = "i" y yaxs = "i" cuando los ejes deban terminar exactamente en esos límites.