ggplot con 2 ejes y en cada lado y diferentes escalas

Resuelto lokheart asked hace 54 años • 18 respuestas

Necesito trazar un gráfico de barras que muestre los recuentos y un gráfico de líneas que muestre la tasa, todo en un solo gráfico. Puedo hacer ambos por separado, pero cuando los pongo juntos, la escala de la primera capa (es decir, la geom_bar) se superpone con la segunda. capa (es decir, la geom_line).

¿ Puedo mover el eje del geom_linehacia la derecha?

lokheart avatar Jan 01 '70 08:01 lokheart
Aceptado

A partir de ggplot2 2.2.0 puedes agregar un eje secundario como este (tomado del anuncio de ggplot2 2.2.0 ):

ggplot(mpg, aes(displ, hwy)) + 
  geom_point() + 
  scale_y_continuous(
    "mpg (US)", 
    sec.axis = sec_axis(~ . * 1.20, name = "mpg (UK)")
  )

ingrese la descripción de la imagen aquí

tstenner avatar Oct 01 '2016 11:10 tstenner

No es posible en ggplot2 porque creo que los gráficos con escalas y separadas (no escalas y que son transformaciones entre sí) son fundamentalmente defectuosas. Algunos problemas:

  • No son invertibles: dado un punto en el espacio de trazado, no se puede asignarlo de forma única a un punto en el espacio de datos.

  • Son relativamente difíciles de leer correctamente en comparación con otras opciones. Consulte Un estudio sobre gráficos de datos de doble escala de Petra Isenberg, Anastasia Bezerianos, Pierre Dragicevic y Jean-Daniel Fekete para obtener más detalles.

  • Se manipulan fácilmente para inducir a error: no existe una forma única de especificar las escalas relativas de los ejes, lo que los deja abiertos a la manipulación. Dos ejemplos del blog Junkcharts: uno , dos

  • Son arbitrarias: ¿por qué tener sólo 2 escalas y no 3, 4 o diez?

Quizás también quieras leer la extensa discusión de Stephen Few sobre el tema Los ejes de doble escala en gráficos ¿son alguna vez la mejor solución? .

hadley avatar Jun 23 '2010 13:06 hadley

A veces un cliente quiere dos escalas y. Darles el discurso "defectuoso" muchas veces no tiene sentido. Pero me gusta la insistencia de ggplot2 en hacer las cosas de la manera correcta. Estoy seguro de que ggplot de hecho está educando al usuario promedio sobre las técnicas de visualización adecuadas.

¿Quizás puedas usar facetado y escala libre para comparar las dos series de datos? - por ejemplo, mire aquí: https://github.com/hadley/ggplot2/wiki/Align-two-plots-on-a-page

Andreas avatar Jun 25 '2010 10:06 Andreas