Объединение векторной и растровой графики в формате PDF - PullRequest
4 голосов
/ 29 сентября 2011

При построении изображений или тепловых карт в pdf, как в примере ниже, они сохраняются как векторные объекты, где каждый пиксель изображения или ячейки в тепловой карте представлен квадратом. Даже при скромных разрешениях это приводит к излишне большим файлам, которые на некоторых устройствах выглядят безобразно. Есть ли способ заставить R сохранить только область изображения в виде png или jpg, встроенную в pdf, но сохранить текст, оси, аннотации и т. Д. Как векторную графику?

Я спрашиваю, потому что я часто печатаю графику R, иногда на больших плакатах, и хотел бы объединить лучшее из двух миров. Конечно, я мог бы сохранить всю фигуру в формате png с высоким разрешением, но это было бы не так элегантно, или комбинировать ее вручную, например. в Inkscape но это довольно утомительно.

my.func <- function(x, y) x %*% t(y)
pdf(file="myPlot.pdf")
image(my.func(seq(-10,10,,500), seq(-5,15,,500)), col=heat.colors(100))
dev.off()

The figure generated by the above code

Спасибо за ваше время, идеи и, надеюсь, решения!

1 Ответ

10 голосов
/ 29 сентября 2011

Используйте ?rasterImage или более удобно в последних версиях image с параметром useRaster = TRUE.

Это значительно уменьшит размер файла.

my.func <- function(x, y) x %*% t(y)
pdf(file="image.pdf")
image(my.func(seq(-10,10,,500), seq(-5,15,,500)), col=heat.colors(100))
dev.off()

pdf(file="rasterImage.pdf")
image(my.func(seq(-10,10,,500), seq(-5,15,,500)), col=heat.colors(100), useRaster = TRUE)
dev.off()

file.info("image.pdf")$size

file.info("rasterImage.pdf")$size

image.pdf: 813229 байт

rasterImage.pdf 16511 байт

Подробнее о новых функциях см. Здесь:

http://developer.r -project.org / Raster / raster-RFC.html

http://journal.r -project.org / archive / 2011-1 / RJournal_2011-1_Murrell.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...