Ronny Klein
2005-Mar-09 13:57 UTC
[R] function in order to plot the same graph to postscript and pdf
Hi,
I've written a function in order to plot the same graph in a postcript and
in
a pdf file. Unfortunately, the second graph is always empty, i.e.:
plot.both <- function{myplot, filename}{
pdf(file=paste(filename, ".pdf", sep=""))
myplot
dev.off()
postscript(file=paste(filename, ".eps", sep=""))
myplot
dev.off()
}
yields in a correct pdf but an empty eps file. However something like this:
plot.both <- function{myplot1, myplot2, filename}{
pdf(file=paste(filename, ".pdf", sep=""))
myplot1
dev.off()
postscript(file=paste(filename, ".eps", sep=""))
myplot2
dev.off()
}
yields the expected results even if myplot1 and myplot2 are identical.
Does somebody know, how I can implement the desired (first) function?
Ronny
PS: My system is: Linux Debian Unstable and R-Version: 2.0.1.
Achim Zeileis
2005-Mar-09 14:11 UTC
[R] function in order to plot the same graph to postscript and pdf
On Wed, 9 Mar 2005 14:57:27 +0100 Ronny Klein wrote:> Hi, > > I've written a function in order to plot the same graph in a postcript > and in a pdf file. Unfortunately, the second graph is always empty, > i.e.: > > plot.both <- function{myplot, filename}{ > pdf(file=paste(filename, ".pdf", sep="")) > myplot > dev.off() > postscript(file=paste(filename, ".eps", sep="")) > myplot > dev.off() > } > > yields in a correct pdf but an empty eps file. However something like > this: > > plot.both <- function{myplot1, myplot2, filename}{ > pdf(file=paste(filename, ".pdf", sep="")) > myplot1 > dev.off() > postscript(file=paste(filename, ".eps", sep="")) > myplot2 > dev.off() > } > > yields the expected results even if myplot1 and myplot2 are identical.What are the myplot objects? Expressions or graphical objects that are printed? In any case, a good recommendation for this kind of stuff is to look at Sweave() in the utils package. I guess you're writing your thesis in LaTeX...and Sweave is a great possibility to mix LaTeX code and R code which for example generates both pdf and eps graphics. Z> Does somebody know, how I can implement the desired (first) function? > > Ronny > > PS: My system is: Linux Debian Unstable and R-Version: 2.0.1. > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html >
Gabor Grothendieck
2005-Mar-09 14:55 UTC
[R] function in order to plot the same graph to postscript and pdf
Ronny Klein <ronny.klein <at> wiwi.uni-halle.de> writes:
:
: Hi,
:
: I've written a function in order to plot the same graph in a postcript and
in
: a pdf file. Unfortunately, the second graph is always empty, i.e.:
:
: plot.both <- function{myplot, filename}{
: pdf(file=paste(filename, ".pdf", sep=""))
: myplot
: dev.off()
: postscript(file=paste(filename, ".eps", sep=""))
: myplot
: dev.off()
: }
:
: yields in a correct pdf but an empty eps file. However something like this:
:
: plot.both <- function{myplot1, myplot2, filename}{
: pdf(file=paste(filename, ".pdf", sep=""))
: myplot1
: dev.off()
: postscript(file=paste(filename, ".eps", sep=""))
: myplot2
: dev.off()
: }
:
: yields the expected results even if myplot1 and myplot2 are identical.
:
: Does somebody know, how I can implement the desired (first) function?
:
: Ronny
:
: PS: My system is: Linux Debian Unstable and R-Version: 2.0.1.
:
The following works on Windows R 2.1.0. Don't know about Linux:
dev.control(displaylist="enable") # enable display list
plot(1:10)
myplot <- recordPlot() # load displaylist into variable
savePlot("myplot", type = "pdf")
savePlot("myplot", type = "ps")
McGehee, Robert
2005-Mar-09 18:17 UTC
[R] function in order to plot the same graph to postscript and pdf
Use substitute() instead of expression(); choose to use either MYPLOT or myplot because they are different variables; and use parentheses around your function arguments instead of braces. -----Original Message----- From: Ronny Klein [mailto:ronny.klein at wiwi.uni-halle.de] Sent: Wednesday, March 09, 2005 12:22 PM To: Achim Zeileis Cc: r-help at stat.math.ethz.ch Subject: Re: [R] function in order to plot the same graph to postscript and pdf> > The myplot is something like this: > > > > plot(x) > > text(foo) > > Aha, I was surprised that this worked for one of the two plots. > You could pass myplot as an expression, e.g. myplot > expression(plot(x)), and then eval() that in the body of plot.both().I've followed your advice and changed my function to something like this: plot.both <- function{myplot, filename}{ MYPLOT <- expression(myplot) pdf(file=paste(filename, ".pdf", sep="")) eval(myplot) dev.off() postscript(file=paste(filename, ".eps", sep="")) eval(myplot) dev.off() } However the result is the same: the first one is actually printed but the second plot is empty. Ronny ______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html