2010-08-29 1 views
25

Журнал мы посылаем статью которая запрашивает следующее:Сохранение графика в формате TIFF, с высоким разрешением для публикации (в R)

Для обеспечения наилучшего качества воспроизведения ваших фигур мы ценим высокий файлы разрешения. Все цифры должны быть предпочтительно в TIFF или EPS формат ... и должен иметь следующую резолюцию:
Graph: 800 - 1200 DPI
Фото: 400 - 800 DPI
цвета (только CMYK): 300 - 400 DPI (DPI = точек на дюйм)

Поскольку я отправляю график, я пытаюсь сохранить его, используя tiff.

Вот код, я использую:

tiff(filename = "c:\\aaa.tiff", 
    res = 800, pointsize = 2) 
plot(1:100) 
dev.off()  

Но, к сожалению, она производит очень «громоздкий» изображение - и если я где не использовать pointsize = 2, я получаю сообщение об ошибке:

Ошибка в plot.new(): рисунок полях слишком больших

Любые предложения?

+1

Как насчет экспорта в pdf/ps, а затем с помощью ImageMagick или какого-либо другого инструмента для преобразования в tiff? –

+0

Я мог бы - но я могу потерять данные за это время. Кроме того, здесь есть что-то основное, что мне не хватает - и я хотел бы узнать его (не так ли? :)) –

+1

Экспортируйте его в SVG, делая это, вы не получите потери качества, потому что он будет векторизован. Вы можете экспортировать SVG с помощью 'RSvgDevice' и' Cairo'. – aL3xa

ответ

18

короткий ответ:.

это громоздкий файл, потому что чем выше разрешение растровых файлов (TIFF), то чем больше файл

другой вариант, EPS, это как PDF или PS.. Просто сохраните в любом из них. Это формат векторного изображения, который, по их словам, является приемлемым. Он будет более компактным и более качественным (Если ваша фигура не содержит огромное количество точек или линий.)

длинный ответ:

Один формат они попросили это TIFF, растровый формат. Он сохраняет информацию как значение, представляющее каждый пиксель изображения. Если изображение имеет 100 DPI и 5 "квадрат, то это 500x500, и это экономит 250000 пикселей информации.Поскольку разрешение изображения становится выше, а размер изображения остается постоянным, то необходимые точки информации повышаются. При 200 DPI это 1000x1000 и 1e6 пикселей информации. Это объясняет, почему ваш файл настолько громоздкий.

Для получения качественного отпечатанного изображения на 5 "квадрате вам потребуется около 300-400 точек на дюйм (точек на дюйм). Таким образом, вы не увидите каждого из этих маленьких пикселей, которые составляют изображение. Если он имеет более низкое разрешение, изображение по-прежнему составляет 5 "x 5", но каждый отдельный квадратный блок (пиксель), составляющий изображение, настолько велик, что вы можете их видеть. Вот почему они просили эту резолюцию. В противном случае текст и строки на ваших графиках выглядят нечеткими, неровными или размытыми. Именно поэтому текст на экране вашего компьютера (только около 100 DPI в наши дни) не так качественно, как напечатан на листе бумаги (обычно не менее 300 dpi).

Другой формат, который они задавали, был EPS.Это инкапсулированный постскриптум. Поскольку это одностраничный файл PS или постскриптум, будет эквивалентен. И, PDF тоже схож. Это все векторные форматы, по сути, один и тот же векторный формат (они могут содержать изображения растрового формата, но не будем игнорировать).

Файл в векторном формате сохраняет информацию о том, как изображение было нарисовано, но не о каждом пикселе. Если у вас есть ось X 3 "длинная позиция 0.5" от нижней части изображения, тогда векторный файл знает это описание. Каждая функция графика описана в файле. Из-за этого для простых рисунков он намного компактнее, чем любое растровое представление при заданном качестве изображения. Кроме того, он масштабируется в размерах без потери качества. Вы просто попросите его нарисовать изображение размером 6 "x 6" вместо 5 "x 5", и оно масштабирует каждую из инструкций для рисования компонентов изображения вверх. Поэтому, даже если файл PDF или EPS будет более компактным, он будет печатать с самым высоким качеством.

Отправить файл PDF или PS и не беспокоиться о разрешении.

+0

Неверно, что издатели, которые хотят получить EPS, также будут принимать файлы PDF; преобразование может быть иногда сложным. – mbq

+0

Я видел этот точный запрос в течение дюжины раз и более, и никогда не терпел неудачу. Тем не менее, eps() будет работать нормально. – John

+0

Для меня это однажды потерпело неудачу; так что это зависит от предпочтений технического редактора, я думаю. – mbq

10

Когда вы увеличиваете разрешение (res), эффективный размер графика уменьшается, и поэтому ошибка маржи вылетает. Постарайтесь сделать увеличенное изображение с большими width и (теоретически, чтобы сделать сюжет того же виртуального размера, он должен быть new_(width|height)=res/72*old_(width|height).
Тем не менее, как предложил Ромунов, лучше использовать ImageMagick; рыхлый качество

26

Одна вещь, которую вы должны сделать, это использовать параметр сжатия.

Например:

tiff("outfile.tif", compression = "lzw") 

LZW это формат сжатия без потерь, так что вы не потеряете данные, но вы, безусловно, уменьшить размер файла.

+0

Как вы можете растрировать в 'pdf (filename)'? - Я попробовал 'pdf (filename, compression =" lzw ")', но он не поддерживается. Мне просто нужна цифра в прессе LaTeX. Должен ли я использовать tiff вместо этого? –

1

Я предлагаю вам использовать devEval из библиотеки R.devices.

Я имел этот вопрос сам и решил его благодаря этому:

options("devEval/args/path"=file.path(Folder_of_Output)) 
    devEval("tiff", name="Name_output", width=120, height=800, { 
    barplot(data, main="imagetitle"); 
    legend("top", legend =c("text of legend")) 
    }) 

Для меня он работал как шарм и файл был сохранен напрямую без проблем.

Смежные вопросы