Я использую R для создания графики со многими прозрачными слоями. Я хочу, чтобы вывод был в формате PDF, но размеры файлов взрываются, когда есть так много прозрачных слоев. Я могу вручную открыть каждый из них в GIMP и сгладить его там, но я бы хотел сделать это с помощью вызова system()
в R, чтобы этот процесс можно было автоматизировать. Кто-нибудь знает способ сделать это?
Вот глупый воспроизводимый пример:
set.seed(2)
x = sort(runif(100))*10
y = rgamma(100,shape = x*rexp(100),scale=1/exp(rnorm(100)))
plot(x,y)
for (i in 1:200){
y = rgamma(100,shape = x*rexp(100),scale=1/exp(rnorm(100)))
fit = loess(y~x)
points(x,y,col=rgb(0,1,0,.3))
lines(x,predict(fit),col=rgb(1,0,0,.3))
}
Теперь я хочу иметь возможность сделать dev.copy2pdf(file="dumb_graph.pdf")
, а затем сделать system(something)
чтобы сгладить изображение. Или, скорее всего, ряд различных системных вызовов. Кто-нибудь знает какие-либо утилиты, которые будут делать это?
Изменить: Я ищу решения для Linux, но я думаю, что решения на других платформах были бы полезными сообщения для тех, кто может искать этот один день.
Edit2: вывод должен быть векторным.
Edit3: это перенесено из SO