Exporte um gráfico para um arquivo .eps com R

107

Como exporto um gráfico para um arquivo de formato .eps? Normalmente exporto meus gráficos para um arquivo .pdf (usando a função 'pdf') e funciona muito bem. No entanto, agora preciso exportar para arquivos .eps.

a droga
fonte
Você pode tentar pesquisar em R digitando ??eps. Você obteria a postscriptpágina ou pelo menos ps.options(o que o levaria a postscript).
Roman Luštrik
Veja também pdf2ps para converter arquivos pdf em ps. Uso do shell:, $ pdf2ps plot.pdfcriará plot.ps.
Paul Rougieux

Respostas:

128

A maneira mais fácil que encontrei de criar pós-scripts é a seguinte, usando o setEPS()comando:

setEPS()
postscript("whatever.eps")
plot(rnorm(100), main="Hey Some Data")
dev.off()
CompEcon
fonte
3
É surpreendente como isso é útil e como é um recurso oculto.
CompEcon
Sim, salvou-me muitas capturas de tela :)
chepukha
Muito obrigado, consegui obter o gráfico em * .eps.
Ibenitesanchez
50

Se você estiver usando ggplot2para gerar uma figura, um ggsave(file="name.eps")também funcionará.

Maiasaura
fonte
Ah, isso é exatamente o que eu precisava! E você pode modificar o tamanho assim:ggsave("name.eps", width = 20, height = 20, units = "cm")
DirtStats
31

O postscript()dispositivo permite a criação de EPS, mas apenas se você alterar alguns dos valores padrão. Leia ?postscriptpara obter os detalhes.

Aqui está um exemplo:

postscript("foo.eps", horizontal = FALSE, onefile = FALSE, paper = "special")
plot(1:10)
dev.off()
Gavin Simpson
fonte
Obrigado. Estou tentando usá-lo, mas há um erro: as margens do gráfico são muito grandes ...
the_drug
6
Aumente as dimensões do gráfico: postscript("foo.eps", horizontal = FALSE, onefile = FALSE, paper = "special", height = 10, width = 10)por exemplo. As unidades estão em polegadas. O problema é que o dispositivo para o qual você está plotando não é grande o suficiente para conter as margens da região de plotagem que você está usando.
Gavin Simpson
1
Eu precisava dos * .eps exportados para funcionar no Microsoft Powerpoint, o que não era o caso inicialmente. Após algumas tentativas e erros, percebi que precisava definir adicionalmente o parâmetro colormodel="rgb"de postscript ().
agoldev
14

Outra maneira é usar SVG, PDF e dispositivos gráficos PostScript baseados em Cairographics. Desta forma, você não precisasetEPS()

cairo_ps("image.eps")
plot(1, 10)
dev.off()
USER_1
fonte
Esta é uma sugestão útil. cairo_psdifere postscriptporque oferece suporte a mais glifos unicode, mas tem a desvantagem de que a semitransparência é mal tratada e geralmente aciona bitmap em vez de saída vetorial.
ms609
4

Sim, abra um postscript()dispositivo com um nome de arquivo terminando em .eps, faça sua (s) plotagem (ões) e ligue dev.off().

Dirk Eddelbuettel
fonte