es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

facet_grid plot

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para controlar el desplazamiento a lo largo del eje x solamente, puedes usar la función position_dodge() con el argumento preserve = "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.

Comments are closed.