Export a graph to .eps file with R
Asked Answered
B

5

126

How do I export a graph to an .eps format file? I typically export my graphs to a .pdf file (using the 'pdf' function), and it works quite well. However, now I have to export to .eps files.

Barbey answered 28/2, 2011 at 13:53 Comment(2)
You could try searching in R by typing ??eps. You would either get postscript page or at least ps.options (which would lead you to postscript).Drawback
See also pdf2ps to convert pdf files to ps. Shell usage: $ pdf2ps plot.pdf, will create plot.ps.Ankney
I
151

The easiest way I've found to create postscripts is the following, using the setEPS() command:

setEPS()
postscript("whatever.eps")
plot(rnorm(100), main="Hey Some Data")
dev.off()
Industrious answered 16/11, 2011 at 6:10 Comment(3)
It's surprising how useful this is, and how hidden a feature it is.Industrious
Yes, saved me a lot of screenshot :)Charest
Thank you very much, I got to get the graph in * .eps.Landon
E
66

If you are using ggplot2 to generate a figure, then a ggsave(file="name.eps") will also work.

Expansile answered 28/2, 2011 at 18:11 Comment(1)
Ah, this is just what I needed! And you can modify size like this: ggsave("name.eps", width = 20, height = 20, units = "cm")Recline
P
33

The postscript() device allows creation of EPS, but only if you change some of the default values. Read ?postscript for the details.

Here is an example:

postscript("foo.eps", horizontal = FALSE, onefile = FALSE, paper = "special")
plot(1:10)
dev.off()
Polysepalous answered 28/2, 2011 at 14:10 Comment(3)
Thanks. I am tryin' to use it, but there is an error : graph margins too large...Barbey
make the plot dimensions bigger: postscript("foo.eps", horizontal = FALSE, onefile = FALSE, paper = "special", height = 10, width = 10) for example. The units are in inches. The problem is that the device you are plotting to is not large enough to contain the margins of the plot region you are using.Polysepalous
I needed the exported *.eps to work in Microsoft Powerpoint, which was not the case initially. After some trial and error I noticed I have to set additionally the parameter colormodel="rgb" of postscript().Capitalism
R
17

Another way is to use Cairographics-based SVG, PDF and PostScript Graphics Devices. This way you don't need to setEPS()

cairo_ps("image.eps")
plot(1, 10)
dev.off()
Rinderpest answered 30/8, 2014 at 12:14 Comment(1)
This is a useful suggestion. cairo_ps differs from postscript in that it supports more unicode glyphs, but has the drawback that semi-transparency is poorly handled, and will often trigger bitmap rather than vector output.Hardnosed
K
5

Yes, open a postscript() device with a filename ending in .eps, do your plot(s) and call dev.off().

Kerenkeresan answered 28/2, 2011 at 13:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.