varias superponer los lineas graficos graficas ggplot escala ejes como cambiar avanzados r graphics transparency ggplot2

los - superponer graficas en r ggplot



¿Cómo hacer gráficos con fondo transparente en R usando ggplot2? (2)

Necesito mostrar gráficos ggplot2 de R a archivos PNG con fondo transparente. Todo está bien con gráficos R básicos, pero sin transparencia con ggplot2:

d <- rnorm(100) #generating random data #this returns transparent png png(''tr_tst1.png'',width=300,height=300,units="px",bg = "transparent") boxplot(d) dev.off() df <- data.frame(y=d,x=1) p <- ggplot(df) + stat_boxplot(aes(x = x,y=y)) p <- p + opts( panel.background = theme_rect(fill = "transparent",colour = NA), # or theme_blank() panel.grid.minor = theme_blank(), panel.grid.major = theme_blank() ) #returns white background png(''tr_tst2.png'',width=300,height=300,units="px",bg = "transparent") p dev.off()

¿Hay alguna forma de obtener un fondo transparente con ggplot2?


Actualizado con la función de theme() , ggsave() y el código para el fondo de la leyenda:

df <- data.frame(y = d, x = 1, group = rep(c("gr1", "gr2"), 50)) p <- ggplot(df) + stat_boxplot(aes(x = x, y = y, color = group) , fill = "transparent" # for the inside of the boxplot )

La forma más rápida es utilizar rect , ya que todos los elementos rectangulares heredan de rect:

p <- p + theme( rect = element_rect(fill = "transparent") # all rectangles ) p

Una forma más controlada es usar opciones de theme :

p <- p + theme( panel.background = element_rect(fill = "transparent") # bg of the panel , plot.background = element_rect(fill = "transparent", col = NA) # bg of the plot , panel.grid.major = element_blank() # get rid of major grid , panel.grid.minor = element_blank() # get rid of minor grid , legend.background = element_rect(fill = "transparent") # get rid of legend bg , legend.box.background = element_rect(fill = "transparent") # get rid of legend panel bg ) p

Ahorrar:

ggsave(p, filename = "tr_tst2.png", bg = "transparent")


También hay una opción plot.background además de panel.background :

df <- data.frame(y=d,x=1) p <- ggplot(df) + stat_boxplot(aes(x = x,y=y)) p <- p + opts( panel.background = theme_rect(fill = "transparent",colour = NA), # or theme_blank() panel.grid.minor = theme_blank(), panel.grid.major = theme_blank(), plot.background = theme_rect(fill = "transparent",colour = NA) ) #returns white background png(''tr_tst2.png'',width=300,height=300,units="px",bg = "transparent") print(p) dev.off()

Por algún motivo, la imagen cargada se muestra de forma diferente que en mi computadora, por lo que la he omitido. Pero para mí, obtengo una trama con un fondo completamente gris a excepción de la parte de la caja de la gráfica de caja que todavía es blanca. Eso también se puede cambiar usando la estética de relleno en el Geom de Gráfica de caja, creo.

Editar

ggplot2 se ha actualizado desde entonces y la función opts() ha quedado obsoleta. Actualmente, utilizará theme() lugar de opts() y element_rect() lugar de theme_rect() , etc.