2015-07-21 16 views
9

Sto cercando di salvare una trama r con sfondo trasparente con il formato png. Ho seguito alcuni metodi consigliati nello stackoverflow ma ogni volta ottengo ancora lo sfondo bianco. La mia data di prova è la seguente:problema salvataggio R trama con sfondo trasparente

structure(list(wd = c(7.5, 22.5, 37.5, 52.5, 67.5, 82.5, 97.5, 
112.5, 127.5, 142.5, 157.5, 172.5, 187.5, 202.5, 217.5, 232.5, 
247.5, 262.5, 277.5, 292.5, 307.5, 322.5, 337.5, 352.5), MP1 = c(17.6, 
21, 20.5, 26.5, 32.7, 38.3, 40.7, 41.8, 41.6, 44.4, 52.4, 62.5, 
70.7, 74.4, 71.1, 66.9, 66.9, 69.4, 69.4, 67.4, 63.4, 55.9, 43.9, 
33.9)), .Names = c("wd", "MP1"), class = "data.frame", row.names = c(NA, 
-24L)) 

Ho provato due metodi ma entrambi non riescono a rimuovere lo sfondo.

Metodo 1:

library(ggplot2) 
library(cairo) 

ggplot(dat, aes(wd, MP1)) + 
    coord_polar(start = 0, direction = 1) + 
    xlab("")+ 
    ylab("")+ 
    scale_x_continuous(limits = c(0, 360), expand = c(0, 0), breaks = seq(0, 360-1, by = 90), labels=c("North", "East","South", "West")) + 
    geom_vline(xintercept = seq(0, 360-1, by = 15), colour = "grey90", size = 0.2) + 
    geom_bar(width=15, stat='identity', fill= "cyan", colour= "white") + 
    theme_bw() + 
    theme(panel.border = element_blank(), 
     legend.key = element_blank(), 
     axis.ticks = element_blank(), 
     axis.text.y = element_blank(), 
     axis.text.x = element_blank(), 
     panel.grid = element_blank()) 

Cairo(width = 640, height = 480, file="test.png", type="png", 
     bg = "transparent") 

dev.off() 

Metodo 2:

png("test.png", width = 4 * 800, 
    height = 4 * 800, res = 600) 

ggplot(dat, aes(wd, MP1)) + 
    coord_polar(start = 0, direction = 1) + 
    xlab("")+ 
    ylab("")+ 
    scale_x_continuous(limits = c(0, 360), expand = c(0, 0), breaks = seq(0, 360-1, by = 90), labels=c("North", "East","South", "West")) + 
    geom_vline(xintercept = seq(0, 360-1, by = 15), colour = "grey90", size = 0.2) + 
    geom_bar(width=15, stat='identity', fill= "cyan", colour= "white") + 
    theme_bw() + 
    theme(panel.border = element_blank(), 
     legend.key = element_blank(), 
     axis.ticks = element_blank(), 
     axis.text.y = element_blank(), 
     axis.text.x = element_blank(), 
     panel.grid = element_blank(), 
     plot.background = element_rect(fill = NULL,colour = NA)) 

dev.off() 

Purtroppo nessuno dei due metodi mi dà uno sfondo trasparente e mostrano ancora uno sfondo bianco se aggiungo a un ArcGIS o un documento Word di Microsoft.

Apprezzerei molto qualsiasi suggerimento su ciò che è possibile che io stia sbagliando perché non ricevo alcun messaggio di errore ma non ottengo lo sfondo trasparente. Molte grazie in anticipo

risposta

9

basate sul commento ricevuti da @Molx e @aosmith la seguente risposta ha funzionato per me, così io sono solo postando se qualcuno trovato utile in futuro per il loro lavoro:

ggplot(dat, aes(wd, MP1)) + 
     coord_polar(start = 0, direction = 1) + 
     xlab("")+ 
     ylab("")+ 
     scale_x_continuous(limits = c(0, 360), expand = c(0, 0), breaks = seq(0, 360-1, by = 90), labels=c("North", "East","South", "West")) + 
     geom_vline(xintercept = seq(0, 360-1, by = 15), colour = "grey90", size = 0.2) + 
     geom_bar(width=15, stat='identity', fill= "cyan", colour= "white") + 
     theme_bw() + 
     theme(panel.border = element_blank(), 
      legend.key = element_blank(), 
      axis.ticks = element_blank(), 
      axis.text.y = element_blank(), 
      axis.text.x = element_blank(), 
      panel.grid = element_blank(), 
      panel.grid.minor = element_blank(), 
      panel.grid.major = element_blank(), 
        panel.background = element_blank(), 
       plot.background = element_rect(fill = "transparent",colour = NA)) 

    ggsave("test.png", bg = "transparent")