Уменьшить размер графиков в формате EPS - PullRequest
5 голосов
/ 22 июля 2009

У меня есть гистограмма с несколькими сотнями элементов, для которых я делаю график Q-Q. В результате получается EPS размером 2,5 мегабайта. Это слишком много для фигуры, которая будет включена только в публикацию и не будет рассматриваться при 100-кратном увеличении.

Есть ли какая-нибудь опция в R, чтобы каким-то образом выводить меньшие EPS? Я искал документы безрезультатно. Или мой лучший вариант, скажем, растеризовать его впоследствии при 300 dpi? Если это так, какие-либо рекомендации для инструмента для этой работы?

Код R для сюжета ничего особенного:

postscript(filename)
qqnorm(n, main=title))
qqline(n)
dev.off()

РЕДАКТИРОВАТЬ: Doh! Мой вопрос касался вывода EPS, а затем преобразования его в некоторый растровый формат. Когда, конечно, я мог просто генерировать PNG в первую очередь из R.

Ответы [ 6 ]

3 голосов
/ 22 июля 2009

Я только что попробовал несколько вещей, которые не работали - я включил их сюда, чтобы спасти других, тратящих свое время Для справки, я установил n <- rnorm(1e5) в вашем коде выше.

Вещи, которые не работают:

  1. Настройка colormodel <- "gray".

  2. Использование другого значения pch. (Некоторые другие значения увеличивают размер файла, но я не нашел ничего, что уменьшало бы его.)

  3. Настройка useKerning = FALSE.

  4. Изменение настроек ширины и высоты.

  5. Использование pdf вместо postscript.

  6. Использование CarioPS из пакета Cairo.

В свете этого я думаю, что вы вряд ли сможете уменьшить размер файла, используя векторный формат. Это означает, что вам придется использовать растровый формат (скорее всего, PNG).

3 голосов
/ 22 июля 2009

У вас есть три варианта.

  1. Принять большой размер файла
  2. Сохранить файл в не векторном формате, например, png
  3. Создать QQplot на случайной выборке данных. Случайная выборка из нескольких сотен точек должна дать аналогичный QQplot.

    приписка (имя файла) Samp <- образец (n, размер = 200) qqnorm (Samp, main = title)) qqline (Samp) dev.off () </p>

2 голосов
/ 28 апреля 2011

в режиме GS, конвертируйте наши файлы в pdf, затем снова конвертируйте в PS или EPS, окончательный размер файла уменьшается в 5-7 раз.

2 голосов
/ 09 сентября 2009

В этом обсуждении в R-списке текст ссылки я узнал о pdftk . С n= 1e5 уменьшен размер PDF с 6 МБ до 600 КБ. Довольно аккуратно!

1 голос
/ 27 октября 2011

ОП решил проблему, создав файл PNG напрямую. Мне пришлось использовать EPS, потому что PNG и другие форматы совмещали изображение. В любом случае мне придется конвертировать в EPS, чтобы включить в файл LaTeX.

Я использовал GIMP для импорта eps-файла размером 10 МБ, созданного с помощью функции R-изображения. Затем повернут, сплющены и сохранены в виде файла формата 300 КБ. Сглаживание объединяет все слои в один слой и удаляет альфа-канал для прозрачности. Легко обрабатывается LaTeX после этой трансформации.

Перед преобразованием изображение очень медленно отрисовывалось в Ghost Script и вообще не могло быть отрисовано в epsviewer. GIMP использует Ghost Script в качестве внешнего интерфейса, поэтому импорт идет медленно, но после импорта вся обработка и рендеринг были очень быстрыми.

1 голос
/ 22 июля 2009

Что ж, EPS просто содержит инструкции по рисованию графика, поэтому его размер будет сильно зависеть от того, сколько у вас точек данных. Вероятно, он меньше в PDF, где используется сжатие, но лучше всего использовать растровый формат, который может быть меньше.

Я подозреваю, что генерируемый EPS R уже настолько мал, насколько он может получить (я уверен, что у них есть собственная функция в Postscript для обработки вывода данных с именем из одного символа и т. Д., Так как это довольно распространенная практика ). Я сомневаюсь, что есть много способов оптимизировать это. Возможно, я ошибаюсь, но есть вероятность, что R - единственная программа, которая имеет достаточно высокоуровневую информацию для разумного сжатия вывода.

...