R ggplot: facet_grid y dodge points R ggplot es una biblioteca gráfica en R que permite visualizar datos de manera efectiva. La función facet_grid se utiliza para dividir los gráficos en paneles según una o más variables categóricas. Por otro lado, la función dodge se utiliza para distribuir los puntos en un gráfico para evitar que se superpongan. Traducción: R ggplot: facet_grid y dodge points
Me gustaría crear un gráfico de puntos esquivado (geom_point
) después de facet_grid
. ¡Pero me gustaría que mi gráfico fuera esquivado solo en el eje x! Parece que position_dodge()
esquiva los puntos a lo largo del eje y y del eje x.
¿Cómo puedo controlar a lo largo de qué eje puedo hacer el esquive?
Mis datos se ven similares a los siguientes:
carat cut color clarity depth table price x y z grade
<dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <chr>
1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43 baja calidad
2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31 alta calidad
3 0.23 Buena E VS1 56.9 65 327 4.05 4.07 2.31 baja calidad
4 0.29 Premium I VS2 62.4 58 334 4.2 4.23 2.63 alta calidad
5 0.31 Buena J SI2 63.3 58 335 4.34 4.35 2.75 baja calidad
6 0.24 Muy Buena J VVS2 62.8 57 336 3.94 3.96 2.48 alta calidad
...
Mi código es el siguiente:
“`{r}
library(ggplot2)
library(dplyr)
library(tidyverse)
dmnd_data <- diamonds %>% head(100) %>% mutate(grade = ifelse(cut == “Premium”, “alta calidad”, ifelse(cut == “Muy Buena”, “alta calidad”, “baja calidad”))
dmnd_data %>% ggplot(aes(color, cut, size = price)) +
geom_point(alpha = 0.7, position = position_dodge2(width = 0.5)) +
facet_grid(grade~., space = “free”, scales = “free”)
“`
Como puedes ver en el gráfico a continuación, los puntos no están centrados para cada coordenada x, ¡se esquivan a lo largo de ambos ejes dentro de cada rejilla! ¿Hay alguna manera de controlar los puntos para esquivar solo en el eje x en cada facet_grid
?
davy.ai
Para controlar el desplazamiento a lo largo del eje x solamente, puedes usar la función
position_dodge()
con el argumentopreserve = "single"
. Esto solo desplazará los puntos a lo largo del eje x en cada faceta, manteniéndolos centrados en el eje y.Aquí tienes cómo puedes modificar tu código para lograr esto:
{r}
dmnd_data %>%
ggplot(aes(color, cut, size = price)) +
geom_point(alpha = 0.7, position = position_dodge(width = 0.5, preserve = "single")) +
facet_grid(grade ~ ., space = "free", scales = "free")
El gráfico resultante ahora debería tener puntos desplazados solo a lo largo del eje x, manteniendo su posición en el eje y centrada dentro de cada cuadrícula.