Как сделать графику с прозрачным фоном в R с помощью ggplot2?

Мне нужно вывести графику ggplot2 из R в PNG-файлы с прозрачным фоном. Все в порядке с базовой графикой R, но нет прозрачности с 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()

есть ли способ получить прозрачный фон с помощью ggplot2?

2 ответов


Обновлено


также plot.background опция в дополнение к 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()

по какой-то причине загруженное изображение отображается иначе, чем на моем компьютере, поэтому я опустил его. Но для меня я получаю сюжет с полностью серым фоном, за исключением коробки, которая все еще белая. Я считаю,что это можно изменить, используя эстетику заполнения в Геом boxplot.

редактировать

ggplot2 С тех пор обновлено и opts() функция устарела. В настоящее время вы будете использовать theme() вместо opts() и element_rect() вместо theme_rect(), etc.