Мне нужно вывести графику 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?
r
graphics
transparency
ggplot2
Юрий Петровский
источник
источник
theme(panel.background = element_rect(fill = "transparent", colour = NA), plot.background = element_rect(fill = "transparent", colour = NA))
Ответы:
Обновлено
theme()
функциейggsave()
и кодом фона легенды:Самый быстрый способ - использовать
rect
, так как все элементы прямоугольника наследуются от rect:Более контролируемый способ - использовать опции
theme
:Чтобы сэкономить (этот последний шаг важен):
источник
plot.background
цвет, как в ответе выше, ваш график будет иметь слабый контур.Также есть
plot.background
вариант помимоpanel.background
:По какой-то причине загруженное изображение отображается иначе, чем на моем компьютере, поэтому я его пропустил. Но для меня я получаю график с полностью серым фоном, за исключением прямоугольной части коробчатой диаграммы, которая все еще остается белой. Я полагаю, что это можно изменить, используя эстетику заливки в геометрии блочной диаграммы.
редактировать
С тех пор ggplot2 был обновлен, и
opts()
функция устарела. В настоящее время вы бы использовалиtheme()
вместоopts()
иelement_rect()
вместоtheme_rect()
и т. Д.источник
bg = "transparent"
для передачи графическому устройству png.knitr
пакет (илиslidify
т. д.), вам нужно передать егоdev.args = list(bg = 'transparent')
как параметр чанка. Подробнее здесь stackoverflow.com/a/13826154/561698Просто чтобы улучшить ответ YCR:
1) Я добавил черные линии по осям x и y. В противном случае они тоже становятся прозрачными.
2) Я добавил прозрачную тему к ключу легенды. В противном случае вы получите там заливку, что будет не очень эстетично.
Наконец, обратите внимание, что все они работают только с форматами pdf и png. jpeg не может создавать прозрачные графики.
источник