Подтвердить что ты не робот

Сохранение графика в tiff, с высоким разрешением для публикации (в R)

Журнал, на который мы отправляем статью, запрашивает следующее:

Чтобы обеспечить наилучшее качество воспроизведения ваших изображений, мы ценим файлы с высоким разрешением. Все цифры должны быть предпочтительно в формате TIFF или EPS... и должны иметь следующее разрешение:
График: 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(): слишком большие поля рисунка

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

4b9b3361

Ответ 1

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

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

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

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

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

Чтобы иметь качественное отпечатанное изображение на 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 и не беспокойтесь о разрешении.

Ответ 2

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

Например:

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

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

Ответ 3

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

Ответ 4

Я предлагаю вам использовать 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"))
  })

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