Comment faire des graphiques avec un fond transparent dans R à l'aide de ggplot2?
J'ai besoin à la sortie ggplot2 graphiques de R pour les fichiers PNG avec un fond transparent. Tout est ok avec la R graphiques, mais pas de transparence avec 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()
Est-il possible de l'arrière-plan transparent avec ggplot2?
- Voir aussi cette réponse, la solution actuelle est d'ajouter
theme(panel.background = element_rect(fill = "transparent", colour = NA), plot.background = element_rect(fill = "transparent", colour = NA))
- Veuillez envisager de marquer le deuxième réponse (par YRC) comme acceptée en raison opte obsolètes.
Vous devez vous connecter pour publier un commentaire.
Mis à jour avec les
theme()
fonction,ggsave()
et le code de la légende de fond:Façon la plus rapide est l'utilisation de l'aide
rect
, comme tous le rectangle éléments héritent de rect:De plus en plus contrôlés façon est d'utiliser des options de
theme
:À enregistrer (cette dernière étape est importante):
plot.background
couleur comme la réponse ci-dessus, votre parcelle de terrain aura un contour indistinct.Il y a aussi un
plot.background
option en pluspanel.background
:Pour une raison quelconque, l'image téléchargée est afficher différemment sur mon ordinateur, j'ai donc omis. Mais pour moi, je reçois un terrain entièrement dans un fond gris à l'exception de la partie de zone de la boîte à moustaches qui est encore blanc. Qui peut être changé en utilisant le remplissage de l'esthétique dans la boîte à moustaches geom ainsi, je crois.
Modifier
ggplot2 a depuis été mis à jour et le
opts()
fonction est obsolète. Actuellement, vous utiliseztheme()
au lieu deopts()
etelement_rect()
au lieu detheme_rect()
, etc.bg = "transparent"
à passer les images png appareil.knitr
paquet (ouslidify
etc) vous devez passerdev.args = list(bg = 'transparent')
qu'un morceau de l'option. Plus de détails ici stackoverflow.com/a/13826154/561698theme
, pasopts
) I pense (et l'équivalent de la solution retenue) fonctionne toujours, aussi loin que je peux dire. Je suis sur le courant ggplot2 et R versions.Seulement pour améliorer le YCR réponse:
1) j'ai ajouté des lignes noires sur les axes x et y. Sinon, ils sont transparents trop.
2) j'ai ajouté un transparent thème de la légende de la clé. Sinon, vous obtiendrez un fond il y,
ce qui ne sera pas très esthétique.
Enfin, notez que tous ceux qui travaillent uniquement avec pdf et png. jpeg ne parvient pas à produire transparent graphiques.