Построение больших графиков в R может быть мучительно медленным.Я пробую некоторые обходные пути , но даже с максимально буферизованным устройством "dbcairo" X11 построение графиков занимает гораздо больше времени, чем могло бы.Я заметил, что устройство "png" быстрее как для маленьких, так и для больших графиков.
Маленькие графики, png () побеждает X11 () примерно в 3 раза:
> system.time({X11(type="dbcairo"); plot(1:1e3); dev.off()})
user system elapsed
0.234 0.029 0.373
> system.time({png("file.png",type="cairo"); plot(1:1e3); dev.off()})
user system elapsed
0.114 0.000 0.113
> system.time({png("file.png",type="Xlib"); plot(1:1e3); dev.off()})
user system elapsed
0.056 0.000 0.107
Большие графики,png () превосходит X11 () от 2,3x до 46x:
> system.time({X11(type="dbcairo"); plot(1:1e5); dev.off()})
user system elapsed
14.420 0.157 15.491
> system.time({png("file.png",type="cairo"); plot(1:1e5); dev.off()})
user system elapsed
6.790 0.001 6.826
> system.time({png("file.png",type="Xlib"); plot(1:1e5); dev.off()})
user system elapsed
0.144 0.010 0.340
Результаты были почти такими же, как и у других типов устройств X11 () (аналогично "dbcairo") и других типах растровых изображений (быть похожим на "png").Я предполагаю, что png () типа "cairo" занимает больше времени, чем "Xlib", потому что он производит сглаженный вывод.
С графиком ggplot2 среднего размера я обнаружил, что png () работает в 1,7–2,6 раза быстреечем X11 () (который использует png(..); plot(g); dev.off()
, а не ggsave()
)
Поскольку я могу загружать и перезагружать файл PNG практически мгновенно, используя минималистский просмотрщик изображений, такой как «feh», мне интересно, почему яне используйте png () в качестве основного устройства печати с R.
Проблема, конечно, в том, что файл PNG не записывается на диск, пока я не вызову dev.off ().Это ограничивает стиль стандартного графического интерфейса, в котором я настраивал устройство один раз, а затем вызывал различные графики, иногда добавляя строки или текст, одновременно просматривая каждое изменение в окне графика.
Было бы трудносоздать новое графическое устройство R, которое записывает файлы изображений в PNG (или другой формат изображения), но использует простую программу просмотра изображений, например «feh», для отображения их после каждой команды построения?Другими словами, я ищу «интерактивное» графическое устройство, такое как X11, но для отрисовки изображения которого используются средства вывода за пределы экрана растрового изображения существующих устройств, такие как png (), jpeg () или tiff ().Или, может быть, устройство png () можно изменить, чтобы иметь опцию, которая дает ему такое поведение.(Или, может быть, я должен использовать knitR для всего ... но я более знаком с командной строкой ...)