Как мне сохранить прозрачность в ggplot2? - PullRequest
21 голосов
/ 23 октября 2010

Мне нравятся графики, которые генерирует ggplot.Тем не менее, все еще несколько затруднительно получать графики качества публикации напрямую.Я обычно должен сделать некоторую постобработку в Illustrator (например, изменение шрифтов, нумерацию рисунков и т. Д.).Хотя я могу сохранить как tiff или png, eps лучше всего подходит для манипуляции с фигурами в Illustrator (я могу разгруппировать объекты, переместить легенду / текст и т. Д.).

Когда я сохраняю объект ggplot с некоторой прозрачностью (в точках)или более плавный) Я получаю эту ошибку:

Warning message:
In grid.Call.graphics("L_points", x$x, x$y, x$pch, x$size) :
  semi-transparency is not supported on this device: reported only once per page

Есть ли обходной путь?

Ответы [ 6 ]

27 голосов
/ 05 августа 2013

Это работает:

ggsave("filename.eps", device=cairo_ps)
19 голосов
/ 08 декабря 2010

У меня были те же проблемы с использованием функции postscript. Я обнаружил, что cairo_ps из пакета grDevices поддерживает прозрачность (по крайней мере, в Ubuntu 10.04 с версией R 2.10.1). Использование будет:

cairo_ps(filename='filename.eps', width=7, height=7)
plot(x,y)
dev.off()
16 голосов
/ 23 октября 2010
* «Устройство»

R не поддерживает частичную прозрачность, но, если я правильно помню, его устройство PDF поддерживает. Illustrator должен иметь возможность читать PDF-файлы с равными возможностями EPS-файлов, или, если нет, попытаться преобразовать их после генерации с помощью pdftops (, а не pdf2ps, это совершенно разные программы и вывод pdf2ps будет .. . низший).

Обратите внимание, что R вообще не пытается оптимизировать вывод PDF , поэтому даже если у вас есть график, который не требует постпроизводства, вы захотите запустить его с помощью утилиты сжатия, такой как qpdf по крайней мере.

6 голосов
/ 23 октября 2010

Вы также можете попробовать экспортировать как SVG через устройство SVG.Не уверен, что Illustrator может читать SVG, но Inkscape может, и это с открытым исходным кодом :) Я сделал несколько хороших вещей с выводом R в SVG в Inkscape, и группировки сохраняются как в EPS.Не могу быть уверен на 100%, что он обрабатывает непрозрачность, но я уверен, что он соответствует стандарту SVG.

4 голосов
/ 26 июня 2015

Формат EPS в принципе не поддерживает полупрозрачность - если вы хотите полупрозрачность и сможете редактировать в Illustrator или Inkscape, вам лучше экспортировать в SVG или PDF.Если вы действительно привязаны к формату EPS, вы можете использовать устройство cairo и указать, в каком разрешении необходимо растеризовать полупрозрачные объекты (тогда в качестве векторного формата остаются только непрозрачные элементы, тогда как полупрозрачные областирастеризованы в растровое изображение).Синтаксис для этого:

cairo_ps(file = "test.eps", onefile = FALSE, fallback_resolution = 600)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))
dev.off()

или

ggsave("filename.eps", device=cairo_ps, fallback_resolution = 600)

Альтернативный вариант - экспортировать в MS Office Powerpoint в векторном формате и выполнять там любое редактирование макета.Это можно легко сделать с помощью моего нового пакета export, см. https://cran.r -project.org / web / packages / export / index.html и для демонстрации https://github.com/tomwenseleers/export

Типичныйсинтаксис очень прост, например:

install.packages("export")
library(export)
library(ggplot2)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, 
      size = Petal.Width, alpha = I(0.7))     
graph2ppt(file="ggplot2_plot.pptx", width=6, height=5) 

В результате получается полностью редактируемый, высококачественный график Powerpoint в собственном векторном формате OfficeML DrawingML с полной поддержкой прозрачности.Там вы можете легко исправить незначительные проблемы форматирования и экспортировать в высококачественный PDF, печатая в PDF.

Вы также можете использовать его для экспорта в Word, Excel, Latex или HTML, и вы также можете использовать его дляэкспорт статистического вывода различных объектов статистики R.

Также имеется функция graph2eps(file="plot.eps", width=6, height=5, fallback_resolution=600) для экспорта в eps с растеризацией полупрозрачных областей ...

0 голосов
/ 22 октября 2018

Я нашел простой способ сделать это.

Используйте «зум» на графике R и щелкните правой кнопкой мыши, чтобы скопировать изображение. Вы можете получить сюжет с тенью.

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