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.

Problema con múltiples gráficos en una página, R

Estoy buscando una forma de alinear múltiples gráficos en una página en R, manteniendo el mismo tamaño de panel y distancias entre ellos. En total tengo cuatro gráficos, dos creados con ggplot y dos con levelplot. He intentado lo siguiente, pero los paneles no se colocan de manera equitativa. Los levelplots (c y d) aparecen más pequeños y con una gran distancia entre ellos. ¿Algún idea de cómo solucionarlo?

PD: Sé que mi código no es reproducible, pero mis rasters son bastante grandes para compartir, disculpen. ¡Espero que este problema suene familiar para alguien!

plot_grid(a, b, c, d, ncol=2, nrow=2, rel_heights = c(1/4, 1/4, 1/4, 1/4))

ggarrange(a, b, c, d, ncol=2, nrow=2)

ggarrange(a, b, c, d, ncol=2, nrow=2, heights = c(1, 1, 1, 1))
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible solución es usar el paquete cowplot en combinación con el paquete patchwork. Aquí tienes un ejemplo:

    “`{r}
    library(cowplot)
    library(patchwork)

    create four plots with different sizes using ggplot and levelplot

    a <- ggplot(…) # primer ggplot
    b <- ggplot(…) # segundo ggplot
    c <- levelplot(…) # primer levelplot
    d <- levelplot(…) # segundo levelplot

    combina los gráficos usando patchwork

    ajusta las alturas y anchuras de los gráficos usando los parámetros height y width

    y alinea los paneles usando el parámetro align

    p <- (a | b) /
    (c | d)
    p + plot_layout(widths = c(1, 1), heights = c(1, 1),
    align = c(“none”, “none”))

    usa cowplot para agregar una leyenda común para los levelplots

    primero, extrae la leyenda de los levelplots

    leg <- cowplot::get_legend(c, d)

    luego agrega la leyenda al gráfico combinado usando ggdraw y draw_plot

    p + ggdraw() + draw_plot(leg)
    “`

    Esto debería crear una cuadrícula de cuatro gráficos con los mismos tamaños de panel y distancias entre ellos. El parámetro align = c("none", "none") asegura que los paneles no estén alineados entre sí. Los parámetros widths y heights ajustan los tamaños de los gráficos para que se ajusten en la página. Finalmente, las funciones cowplot::get_legend(), ggdraw() y draw_plot() de cowplot se utilizan para agregar una leyenda común a los levelplots.

    Ten en cuenta que es posible que debas ajustar los parámetros específicos dependiendo de los tamaños y dimensiones de los gráficos. Además, el paquete cowplot proporciona otras herramientas para organizar y alinear gráficos que pueden ser útiles.

Comments are closed.