ggplot geom_smooth r ggplot2 jitter

r - ggplot - geom_smooth



R: ¿Cómo jitter tanto geom_line como geom_point en ggplot2 linegraph? (2)

Otra opción para horizontal solo sería especificar position_dodge y pasar esto al argumento de position para cada geom.

pd <- position_dodge(0.4) ggplot(data = df, aes(x = dimension, y = value, shape = Time, linetype = Time, group = Time)) + geom_line(position = pd) + geom_point(position = pd) + xlab("Dimension") + ylab("Value")

Tengo un ggplot2 líneas ggplot2 con dos líneas que presentan una superposición significativa. Estoy tratando de usar position_jitterdodge() para que sean más visibles, pero no puedo obtener las líneas y los puntos para ambos jitter de la misma manera. Intento oscilar los puntos y la línea horizontalmente solamente (ya que no quiero sugerir ningún cambio en el eje y). Aquí hay un MWE:

## Create data frames dimension <- factor(c("A", "B", "C", "D")) df <- data.frame("dimension" = rep(dimension, 2), "value" = c(20, 21, 34, 32, 20, 21, 36, 29), "Time" = c(rep("First", 4), rep("Second", 4))) ## Plot it ggplot(data = df, aes(x = dimension, y = value, shape = Time, linetype = Time, group = Time)) + geom_line(position = position_jitterdodge(dodge.width = 0.45)) + geom_point(position = position_jitterdodge(dodge.width = 0.45)) + xlab("Dimension") + ylab("Value")

Lo que produce lo feo:

Obviamente, tengo algo fundamentalmente erróneo aquí: ¿qué debo hacer para que el jitter de geom_point siga el jitter de geom_line ?


Una solución es agitar manualmente los puntos:

df$value_j <- jitter(df$value) ggplot(df, aes(dimension, value_j, shape=Time, linetype=Time, group=Time)) + geom_line() + geom_point() + labs(x="Dimension", y="Value")

La solución horizontal para su eje X discreto no es tan limpia (está limpia debajo de las cubiertas cuando ggplot2 lo hace, ya que maneja el eje y las transformaciones del punto para usted muy bien) pero es factible:

df$dim_j <- jitter(as.numeric(factor(df$dimension))) ggplot(df, aes(dim_j, value, shape=Time, linetype=Time, group=Time)) + geom_line() + geom_point() + scale_x_continuous(labels=dimension) + labs(x="Dimension", y="Value")