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.

Varias tramas no se representan como se describe en layout.show.

Usando el paquete raster y su función plot, quiero organizar seis gráficos de objetos Raster* en 2 filas y 3 columnas, por columnas. Por lo tanto, configuré mi diseño de esta manera:

r
layout(mat=matrix(1:6, nrow=2, ncol=3), heights=c(1,1), widths=c(2,1,1))

Llamar a layout.show(6) resulta en esta vista previa, que es exactamente lo que quiero:

Imagen

Sin embargo, después de colocar el primer gráfico donde está el 1 (como se esperaba), el segundo gráfico se coloca donde está el 3 (no como se esperaba). ¿Por qué sucede eso?

Cuando vuelvo a llamar a layout.show(6), obtengo esto, que NO es lo que quiero:

Imagen

Curiosamente, al usar par(mfcol=c(2,3)) en lugar de layout, también coloca los gráficos por filas (es decir, se comporta como mfrow).

(Soy consciente de que podría simplemente reorganizar el orden de las llamadas a plot, pero quiero saber por qué esto no funciona como espero).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es que por defecto, la función “plot” está configurada para usar el parámetro “mfrow” en lugar del parámetro “layout”. Por lo tanto, cuando configuras tu diseño utilizando “layout(mat=matrix(1:6, nrow=2, ncol=3), heights=c(1,1), widths=c(2,1,1))”, esto no afecta la ubicación de cada gráfico.

    Para resolver este problema, puedes usar en su lugar el parámetro “mfcol”. Puedes configurarlo utilizando “par(mfcol=c(2,3))” antes de llamar a la función “plot”, de esta manera:

    par(mfcol=c(2,3))
    plot(raster1)
    plot(raster2)
    plot(raster3)
    plot(raster4)
    plot(raster5)
    plot(raster6)
    

    Esto organizará tus gráficos en 2 filas y 3 columnas como se espera.

    Alternativamente, puedes usar la función “print” en lugar de la función “plot”, de esta manera:

    plot(raster1)
    print(raster2, position=c(1,2))
    print(raster3, position=c(1,3))
    print(raster4, position=c(2,1))
    print(raster5, position=c(2,2))
    print(raster6, position=c(2,3))
    

    Esto también organizará tus gráficos en 2 filas y 3 columnas, utilizando el parámetro “layout”.

Comments are closed.