Есть ли способ сохранить гроб прямо в rasterGrob?

Я рисую несколько объектов ggplot2 и помещаю их на grid.arrange внутри вызова устройства 'pdf'. Я обнаружил, что PDF-файл работает примерно в миллиард раз лучше (быстрее генерируется, быстрее рендерится), если я сначала растрирую графики. Итак, внутри параллельного цикла dlply я использую ggsave для записи ggplot2 в виде PNG, затем использую readPNG для обратного чтения и rasterGrob для преобразования возвращаю его в dlply. dlply помещает его в список grobs, который grid.arrange затем рисует на устройстве PDF.

Некоторые из них кажутся громоздкими, так что в целом есть ли лучший подход? Но что меня действительно беспокоит, так это запись PNG-файлов на диск, когда все, что я делаю с ними, — это считываю их обратно. Есть ли способ сохранить grob непосредственно в rasterGrob?

plot.list <- dlply( ... {
        ggsave(filename= fname
               ,plot= my.plot
               ,device= "png" 
               ,scale = 1, width= 1.1, height= 2.125, units = "in" 
               ,dpi = dpi)

        # return it as a list of rasters
        rasterGrob(readPNG( source= fname, info= TRUE))
}

person woodvi    schedule 28.04.2016    source источник
comment
Хм. Не выглядит легким. Это может быть полезно: stackoverflow.com/questions/7171523/ . Вы бы использовали графическое устройство Cairo напрямую, а не через ggsave   -  person MrFlick    schedule 28.04.2016
comment
Я сочувствую этому вопросу (я всегда хотел растрировать определенный слой графика), но если вы растрируете все изображение, я не уверен, что вы получите, создав pdf, а не png?   -  person baptiste    schedule 29.04.2016


Ответы (1)


В итоге я использовал графическое устройство Cairo, как описано в @Yang Как в R построить график в буфере памяти вместо файла? ответ, предложенный @MrFlick

person woodvi    schedule 22.11.2019