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.

Gráfico de líneas en R con dos ejes y utilizando twoord.plot: Faltan valores en el primer eje y.

Quería crear un gráfico con dos diferentes ejes y (y) usando el siguiente código:

twoord.plot(lx = stack_question$year, ly = stack_question$size, ry =stack_question$density , rx = stack_question$year)

Sin embargo, el eje y del lado izquierdo no muestra los valores. ¿Cuál es la mejor manera de resolver este problema?

Mi conjunto de datos se ve así.


año tamaño densidad
1 1975 144 0.06116022
2 1980 164 0.10030097
3 1985 168 0.11203907
4 1990 171 0.14876726
5 1995 173 0.15874613
6 2000 192 0.21369396
7 2005 193 0.23662855
8 2010 195 0.29243307
9 2015 196 0.30810454

¡Muchas gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una solución a este problema es ajustar el formato del eje-y en el lado izquierdo especificando los límites y divisiones. Esto se puede lograr utilizando la función scale_y_continuous en ggplot2.

    Aquí hay un código de ejemplo para crear el gráfico con el eje-y ajustado en el lado izquierdo:

    library(ggplot2)
    
    ggplot(data = stack_question, aes(x = year)) +
      geom_line(aes(y = size, color = "Size"), size = 1) +
      geom_line(aes(y = density*100, color = "Density"), size = 1) +
      scale_y_continuous(name = "Size",
                         sec.axis = sec_axis(trans = ~./100, name = "Density"),
                         limits = c(100, 250),
                         breaks = seq(100, 250, by = 25))
    

    Las primeras y segundas líneas de código cargan la biblioteca ggplot2 y especifican el marco de datos y la variable del eje-x, respectivamente. Las terceras y cuartas líneas agregan dos líneas al gráfico, una para la variable de size y otra para la variable density ajustada a una escala de porcentaje.

    Luego, se utiliza la función scale_y_continuous para ajustar los ejes-y izquierdo y derecho. El argumento name especifica el nombre del eje-y en el lado izquierdo, y sec.axis especifica el nombre del eje-y en el lado derecho. El argumento trans se utiliza para especificar la transformación que se aplicará al eje derecho (en este caso, dividiendo por 100 para ajustar la escala de porcentaje). Los argumentos limits y breaks se utilizan para establecer el rango y las marcas en el eje izquierdo.

    Al ejecutar este código se produce un gráfico con ejes-y correctamente formateados:

    image

Comments are closed.