Cómo establecer los límites de los ejes en los gráficos ggplot2 R

Gustavo du Mortier 16 febrero 2024
  1. Establece los límites del eje x con scale_x_continuous en ggplot2
  2. Usa coord_cartesian para limitar ambos ejes en ggplot2
Cómo establecer los límites de los ejes en los gráficos ggplot2 R

Veamos primero nuestro diagrama de dispersión sin poner ningún límite al eje. En este ejemplo, usamos el conjunto de datos del Iris para correlacionar los valores de la anchura del sépalo y la anchura del septo, categorizando las especies por color. Antes de llamar a la función ggplot, necesitamos instalar el paquete ggplot2 y cargar la biblioteca correspondiente:

install.packages("ggplot2")
library(ggplot2)
scatter <- ggplot(data=iris, aes(x = Sepal.Length, y = Sepal.Width)) 
scatter + geom_point(aes(color=Species, shape=Species)) +
 ylab("Sepal Width") + xlab("Sepal Length") +
 ggtitle("Correlation of Sepal Length & Width by species")

Resultado

R ggplot2 Scatter-plot-without-axis-limits

Ahora, supongamos que queremos limitar el eje x (Longitud del Sépalo) para que el gráfico muestre sólo la región entre x=5 y x=7. Tenemos dos opciones para hacerlo: usar scale_x_continuous o usar coord_cartesian.

scale_x_continuous elimina todos los puntos de datos que caen fuera del rango especificado para el eje dado, mientras que coord_cartesiana sólo ajusta el área visible. En la mayoría de los casos, ambas opciones darán los mismos resultados. Pero si por casualidad ajustas algo a los datos, los valores ajustados probablemente cambiarán.

Establece los límites del eje x con scale_x_continuous en ggplot2

Para usar scale_x_continuous, necesitas especificar un vector con los límites inferior y superior del eje x, así:

scatter <- ggplot(data=iris, aes(x = Sepal.Length, y = Sepal.Width)) 
scatter + geom_point(aes(color=Species, shape=Species)) +
 ylab("Sepal Width") + xlab("Sepal Length") +
 ggtitle("Correlation of Sepal Length & Width by species") +
 scale_x_continuous(limits = c(5, 7))

Producción:

R ggpolot2 - Gráfica de dispersión con los límites del eje

También recibirá un mensaje de advertencia que le indicará cuántos puntos de datos se eliminan del gráfico:

Warning message:
Removed 34 rows containing missing values (geom_point).

En caso de que también quieras limitar el eje y, puedes añadir scale_y_continuous de la misma manera, como en este ejemplo:

![Scatter-plot-with-limits-both-axis](C:\GDM\Cosas\UpWork\Dishan-Consultancy\R\Scatter-plot-with-limits-both-axis.jpg)scatter-<--ggplot(data=iris,-aes(x-=-Sepal.Length,-y-=-Sepal.Width)) 
scatter + geom_point(aes(color=Species, shape=Species)) +
  ylab("Sepal Width") + xlab("Sepal Length") +
  ggtitle("Correlation of Sepal Length & Width by species") +
  scale_x_continuous(limits = c(5, 7)) +
  scale_y_continuous(limits = c(2.5, 4))

La salida mostrará los límites en ambos ejes:

R ggpolot2 - Gráfico de dispersión con límites en ambos ejes

También puedes usar las funciones abreviadas xlim y ylim en lugar de scale_x_continuous y scale_y_continuous para hacer el comando un poco más corto:

scatter <- ggplot(data=iris, aes(x = Sepal.Length, y = Sepal.Width)) 
scatter + geom_point(aes(color=Species, shape=Species)) +
  ylab("Sepal Width") + xlab("Sepal Length") +
  ggtitle("Correlation of Sepal Length & Width by species") +
  xlim(5, 7) + ylim(2.5, 4)

Usa coord_cartesian para limitar ambos ejes en ggplot2

Si quieres usar coord_cartesian en lugar de scale_x_continuous y scale_y_continuous, el comando sería así:

scatter <- ggplot(data=iris, aes(x = Sepal.Length, y = Sepal.Width)) 
scatter + geom_point(aes(color=Species, shape=Species)) +
 ylab("Sepal Width") + xlab("Sepal Length") +
 ggtitle("Correlation of Sepal Length & Width by species") +
 coord_cartesian(xlim = c(5, 7), ylim = c(2.5, 4))

Y la salida del gráfico será la misma.

En el RStudio cheatsheet de ggplot2, puedes encontrar una aclaración visual para el uso de todas las opciones de este comando.

Artículo relacionado - R Plot