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