Re: [R] Cairo pdf canvas size

2011-01-07 Thread Eduardo de Oliveira Horta
Thanks!

On Thu, Jan 6, 2011 at 7:13 PM, Dennis Murphy djmu...@gmail.com wrote:
 Hi:

 On Thu, Jan 6, 2011 at 5:36 AM, Eduardo de Oliveira Horta
 eduardo.oliveiraho...@gmail.com wrote:

 Peter,
 thank you, that's what I was looking for!
 David, I forgot to tell you my OS. Sorry... it's Win7. I'm running a
 RKWard session.
 And this is strange:
  Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
 Error: could not find function Cairo
 ... maybe you're not using the Cairo
 package? http://cran.r-project.org/web/packages/Cairo/Cairo.pdf

 And Dennis, thanks for the code. It worked, and I'm considering to adopt
 data frames in the near future. By the way, I'm working with functional time
 series, so each observation is a function (or a vector representing that
 function evaluated on a grid) indexed by time. Any insights on how to
 implement data frames here?

 I don't see a real issue. It would be easier to give you concrete
 information if there were an artificial example that mimics your situation,
 but it's not that hard.  I'd suggest looking into the zoo package to create
 a series - it can handle both regular (zooreg()) and irregular (zoo())
 series. Basically, a zoo object is a numeric vector with a time index. One
 can create multiple series with a single index, individual series with
 different indices that can be combined into data frames, etc. I've browsed
 through some of the code that accompanies Ramsey, Hooker and Graves' FDA
 book in R and Matlab, and occasionally they use the zoo package as well.

 Here's an example, but I expect that someone will show how to convert the
 zoo series to data frames much more efficiently for use in ggplot2...

 library(zoo)
 library(ggplot2)
 library(lattice)
 # Generate three daily series with different start times and lengths
 a - zoo(rnorm(450), as.Date(2005-01-01) + 0:449)
 b - zoo(rnorm(600, 1, 2), as.Date('2005-06-01') + 0:599)
 d - zoo(rnorm(300, 2, 1), as.Date('2004-09-01') + 0:299)

 # Convert to data frame, make time index a variable and make sure it's a
 Date object
 A - as.data.frame(a)
 B - as.data.frame(b)
 D - as.data.frame(d)
 A$Date - as.Date(rownames(A))
 B$Date - as.Date(rownames(B))
 D$Date - as.Date(rownames(D))
 # Give all three series the same name
 names(A)[1] - names(B)[1] - names(D)[1] - 'y'
 # Stack the three data frames and create a series ID variable
 comb - rbind(A, B, D)
 comb$Series - rep(c('A', 'B', 'D'), c(nrow(A), nrow(B), nrow(D)))
 str(comb)    # make sure that Date is a Date object

 # ggplot of the three series
 ggplot(comb, aes(x = Date, y = y, color = Series)) + geom_path()
 # Stacked individual plots (faceted)
 last_plot() + facet_grid(Series ~ .)

 # lattice version
 xyplot(y ~ Date, data = comb, groups = Series, type = 'l', col.line = 1:3)
 # Stacked individual series
 xyplot(y ~ Date | Series, data = comb, type = 'l', layout = c(1, 3))

 If you need the grid coordinates, use expand.grid() - it can be used when
 creating a data frame, too.

 As Bert noted the other night in another thread, one can use xyplot directly
 on zoo objects, but I don't have any direct experience with that yet so will
 defer to others if they wish to contribute. ?xyplot.zoo provides some
 examples.

 Hope this gives you some idea of what can be done,
 Dennis

 Best regards,
 Eduardo
 On Thu, Jan 6, 2011 at 1:47 AM, Peter Langfelder
 peter.langfel...@gmail.com wrote:

 On Wed, Jan 5, 2011 at 7:35 PM, Eduardo de Oliveira Horta
 eduardo.oliveiraho...@gmail.com wrote:
  Something like this:
 
  u=seq(from=-pi, to=pi, length=1000)
  f=sin(u)
  Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
  par(cex.axis=.6,col.axis=grey,ann=FALSE, lwd=.25,bty=n, las=1,
  tcl=-.2,
  mgp=c(3,.5,0))
  xlim=c(-pi,pi)
  ylim=round(c(min(f),max(f)))
  plot(u,f,xlim,ylim,type=l,col=firebrick3, axes=FALSE)
  axis(side=1, lwd=.25, col=darkgrey, at=seq(from=xlim[1], to=xlim[2],
  length=5))
  axis(side=2, lwd=.25, col=darkgrey, at=seq(from=ylim[1], to=ylim[2],
  length=5))
  abline(v=seq(from=xlim[1], to=xlim[2], length=5), lwd=.25,lty=dotted,
  col=grey)
  abline(h=seq(from=ylim[1], to=ylim[2], length=5), lwd=.25,lty=dotted,
  col=grey)
  dev.off()
 
 


 Wow, you must like light colors :)

 To the point, just set margins, for example

 par(mar = c(2,2,0.5, 0.5))

 (margins are bottom, left, top, right)

 after the Cairo command.

 BTW, Cairo doesn't work for me either... but I tried your example by
 plotting to the screen.

 Peter




  Notice how the canvas' margins are relatively far from the plotting
 area.
 
  Thanks,
 
  Eduardo
 
  On Thu, Jan 6, 2011 at 1:00 AM, David Winsemius
  dwinsem...@comcast.netwrote:
 
 
  On Jan 5, 2011, at 9:38 PM, Eduardo de Oliveira Horta wrote:
 
   Hello,
 
  I want to save a pdf plot using Cairo, but the canvas of the saved
  file
  seems too large when compared to the actual plotted area.
 
  Is there a way to control the relation between the canvas size and
  the
  size
  of actual plotting area?
 
 
 

Re: [R] Cairo pdf canvas size

2011-01-06 Thread Eduardo de Oliveira Horta
Peter,

thank you, that's what I was looking for!

David, I forgot to tell you my OS. Sorry... it's Win7. I'm running a RKWard
session.

And this is strange:

 Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
Error: could not find function Cairo

... maybe you're not using the Cairo package?
http://cran.r-project.org/web/packages/Cairo/Cairo.pdf

And Dennis, thanks for the code. It worked, and I'm considering to adopt
data frames in the near future. By the way, I'm working with functional time
series, so each observation is a function (or a vector representing that
function evaluated on a grid) indexed by time. Any insights on how to
implement data frames here?

Best regards,

Eduardo

On Thu, Jan 6, 2011 at 1:47 AM, Peter Langfelder peter.langfel...@gmail.com
 wrote:

 On Wed, Jan 5, 2011 at 7:35 PM, Eduardo de Oliveira Horta
 eduardo.oliveiraho...@gmail.com wrote:
  Something like this:
 
  u=seq(from=-pi, to=pi, length=1000)
  f=sin(u)
  Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
  par(cex.axis=.6,col.axis=grey,ann=FALSE, lwd=.25,bty=n, las=1,
 tcl=-.2,
  mgp=c(3,.5,0))
  xlim=c(-pi,pi)
  ylim=round(c(min(f),max(f)))
  plot(u,f,xlim,ylim,type=l,col=firebrick3, axes=FALSE)
  axis(side=1, lwd=.25, col=darkgrey, at=seq(from=xlim[1], to=xlim[2],
  length=5))
  axis(side=2, lwd=.25, col=darkgrey, at=seq(from=ylim[1], to=ylim[2],
  length=5))
  abline(v=seq(from=xlim[1], to=xlim[2], length=5), lwd=.25,lty=dotted,
  col=grey)
  abline(h=seq(from=ylim[1], to=ylim[2], length=5), lwd=.25,lty=dotted,
  col=grey)
  dev.off()
 
 


 Wow, you must like light colors :)

 To the point, just set margins, for example

 par(mar = c(2,2,0.5, 0.5))

 (margins are bottom, left, top, right)

 after the Cairo command.

 BTW, Cairo doesn't work for me either... but I tried your example by
 plotting to the screen.

 Peter




  Notice how the canvas' margins are relatively far from the plotting area.
 
  Thanks,
 
  Eduardo
 
  On Thu, Jan 6, 2011 at 1:00 AM, David Winsemius dwinsem...@comcast.net
 wrote:
 
 
  On Jan 5, 2011, at 9:38 PM, Eduardo de Oliveira Horta wrote:
 
   Hello,
 
  I want to save a pdf plot using Cairo, but the canvas of the saved file
  seems too large when compared to the actual plotted area.
 
  Is there a way to control the relation between the canvas size and the
  size
  of actual plotting area?
 
 
  OS?,  ... example?
 
  ==
 
  David Winsemius, MD
  West Hartford, CT
 
 
 
 [[alternative HTML version deleted]]
 
  __
  R-help@r-project.org mailing list
  https://stat.ethz.ch/mailman/listinfo/r-help
  PLEASE do read the posting guide
 http://www.R-project.org/posting-guide.html
  and provide commented, minimal, self-contained, reproducible code.
 


[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Cairo pdf canvas size

2011-01-06 Thread Dennis Murphy
Hi:

On Thu, Jan 6, 2011 at 5:36 AM, Eduardo de Oliveira Horta 
eduardo.oliveiraho...@gmail.com wrote:

 Peter,

 thank you, that's what I was looking for!

 David, I forgot to tell you my OS. Sorry... it's Win7. I'm running a RKWard
 session.

 And this is strange:

  Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
 Error: could not find function Cairo

 ... maybe you're not using the Cairo package?
 http://cran.r-project.org/web/packages/Cairo/Cairo.pdf

 And Dennis, thanks for the code. It worked, and I'm considering to adopt
 data frames in the near future. By the way, I'm working with functional time
 series, so each observation is a function (or a vector representing that
 function evaluated on a grid) indexed by time. Any insights on how to
 implement data frames here?


I don't see a real issue. It would be easier to give you concrete
information if there were an artificial example that mimics your situation,
but it's not that hard.  I'd suggest looking into the zoo package to create
a series - it can handle both regular (zooreg()) and irregular (zoo())
series. Basically, a zoo object is a numeric vector with a time index. One
can create multiple series with a single index, individual series with
different indices that can be combined into data frames, etc. I've browsed
through some of the code that accompanies Ramsey, Hooker and Graves' FDA
book in R and Matlab, and occasionally they use the zoo package as well.

Here's an example, but I expect that someone will show how to convert the
zoo series to data frames much more efficiently for use in ggplot2...

library(zoo)
library(ggplot2)
library(lattice)
# Generate three daily series with different start times and lengths
a - zoo(rnorm(450), as.Date(2005-01-01) + 0:449)
b - zoo(rnorm(600, 1, 2), as.Date('2005-06-01') + 0:599)
d - zoo(rnorm(300, 2, 1), as.Date('2004-09-01') + 0:299)

# Convert to data frame, make time index a variable and make sure it's a
Date object
A - as.data.frame(a)
B - as.data.frame(b)
D - as.data.frame(d)
A$Date - as.Date(rownames(A))
B$Date - as.Date(rownames(B))
D$Date - as.Date(rownames(D))
# Give all three series the same name
names(A)[1] - names(B)[1] - names(D)[1] - 'y'
# Stack the three data frames and create a series ID variable
comb - rbind(A, B, D)
comb$Series - rep(c('A', 'B', 'D'), c(nrow(A), nrow(B), nrow(D)))
str(comb)# make sure that Date is a Date object

# ggplot of the three series
ggplot(comb, aes(x = Date, y = y, color = Series)) + geom_path()
# Stacked individual plots (faceted)
last_plot() + facet_grid(Series ~ .)

# lattice version
xyplot(y ~ Date, data = comb, groups = Series, type = 'l', col.line = 1:3)
# Stacked individual series
xyplot(y ~ Date | Series, data = comb, type = 'l', layout = c(1, 3))

If you need the grid coordinates, use expand.grid() - it can be used when
creating a data frame, too.

As Bert noted the other night in another thread, one can use xyplot directly
on zoo objects, but I don't have any direct experience with that yet so will
defer to others if they wish to contribute. ?xyplot.zoo provides some
examples.

Hope this gives you some idea of what can be done,
Dennis

Best regards,

 Eduardo

 On Thu, Jan 6, 2011 at 1:47 AM, Peter Langfelder 
 peter.langfel...@gmail.com wrote:

 On Wed, Jan 5, 2011 at 7:35 PM, Eduardo de Oliveira Horta
 eduardo.oliveiraho...@gmail.com wrote:
  Something like this:
 
  u=seq(from=-pi, to=pi, length=1000)
  f=sin(u)
  Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
  par(cex.axis=.6,col.axis=grey,ann=FALSE, lwd=.25,bty=n, las=1,
 tcl=-.2,
  mgp=c(3,.5,0))
  xlim=c(-pi,pi)
  ylim=round(c(min(f),max(f)))
  plot(u,f,xlim,ylim,type=l,col=firebrick3, axes=FALSE)
  axis(side=1, lwd=.25, col=darkgrey, at=seq(from=xlim[1], to=xlim[2],
  length=5))
  axis(side=2, lwd=.25, col=darkgrey, at=seq(from=ylim[1], to=ylim[2],
  length=5))
  abline(v=seq(from=xlim[1], to=xlim[2], length=5), lwd=.25,lty=dotted,
  col=grey)
  abline(h=seq(from=ylim[1], to=ylim[2], length=5), lwd=.25,lty=dotted,
  col=grey)
  dev.off()
 
 


 Wow, you must like light colors :)

 To the point, just set margins, for example

 par(mar = c(2,2,0.5, 0.5))

 (margins are bottom, left, top, right)

 after the Cairo command.

 BTW, Cairo doesn't work for me either... but I tried your example by
 plotting to the screen.

 Peter




  Notice how the canvas' margins are relatively far from the plotting area.
 
  Thanks,
 
  Eduardo
 
  On Thu, Jan 6, 2011 at 1:00 AM, David Winsemius dwinsem...@comcast.net
 wrote:
 
 
  On Jan 5, 2011, at 9:38 PM, Eduardo de Oliveira Horta wrote:
 
   Hello,
 
  I want to save a pdf plot using Cairo, but the canvas of the saved
 file
  seems too large when compared to the actual plotted area.
 
  Is there a way to control the relation between the canvas size and the
  size
  of actual plotting area?
 
 
  OS?,  ... example?
 
  ==
 
  David Winsemius, MD
  West Hartford, CT
 
 
 
 [[alternative HTML version deleted]]
 
  

Re: [R] Cairo pdf canvas size

2011-01-05 Thread David Winsemius


On Jan 5, 2011, at 9:38 PM, Eduardo de Oliveira Horta wrote:


Hello,

I want to save a pdf plot using Cairo, but the canvas of the saved  
file

seems too large when compared to the actual plotted area.

Is there a way to control the relation between the canvas size and  
the size

of actual plotting area?



OS?,  ... example?

==

David Winsemius, MD
West Hartford, CT

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Cairo pdf canvas size

2011-01-05 Thread Eduardo de Oliveira Horta
Something like this:

u=seq(from=-pi, to=pi, length=1000)
f=sin(u)
Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
par(cex.axis=.6,col.axis=grey,ann=FALSE, lwd=.25,bty=n, las=1, tcl=-.2,
mgp=c(3,.5,0))
xlim=c(-pi,pi)
ylim=round(c(min(f),max(f)))
plot(u,f,xlim,ylim,type=l,col=firebrick3, axes=FALSE)
axis(side=1, lwd=.25, col=darkgrey, at=seq(from=xlim[1], to=xlim[2],
length=5))
axis(side=2, lwd=.25, col=darkgrey, at=seq(from=ylim[1], to=ylim[2],
length=5))
abline(v=seq(from=xlim[1], to=xlim[2], length=5), lwd=.25,lty=dotted,
col=grey)
abline(h=seq(from=ylim[1], to=ylim[2], length=5), lwd=.25,lty=dotted,
col=grey)
dev.off()

Notice how the canvas' margins are relatively far from the plotting area.

Thanks,

Eduardo

On Thu, Jan 6, 2011 at 1:00 AM, David Winsemius dwinsem...@comcast.netwrote:


 On Jan 5, 2011, at 9:38 PM, Eduardo de Oliveira Horta wrote:

  Hello,

 I want to save a pdf plot using Cairo, but the canvas of the saved file
 seems too large when compared to the actual plotted area.

 Is there a way to control the relation between the canvas size and the
 size
 of actual plotting area?


 OS?,  ... example?

 ==

 David Winsemius, MD
 West Hartford, CT



[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Cairo pdf canvas size

2011-01-05 Thread David Winsemius


On Jan 5, 2011, at 10:35 PM, Eduardo de Oliveira Horta wrote:


Something like this:

u=seq(from=-pi, to=pi, length=1000)
f=sin(u)
Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
par(cex.axis=.6,col.axis=grey,ann=FALSE, lwd=.25,bty=n, las=1,  
tcl=-.2, mgp=c(3,.5,0))

xlim=c(-pi,pi)
ylim=round(c(min(f),max(f)))
plot(u,f,xlim,ylim,type=l,col=firebrick3, axes=FALSE)
axis(side=1, lwd=.25, col=darkgrey, at=seq(from=xlim[1],  
to=xlim[2], length=5))
axis(side=2, lwd=.25, col=darkgrey, at=seq(from=ylim[1],  
to=ylim[2], length=5))
abline(v=seq(from=xlim[1], to=xlim[2], length=5), lwd=. 
25,lty=dotted, col=grey)
abline(h=seq(from=ylim[1], to=ylim[2], length=5), lwd=. 
25,lty=dotted, col=grey)

dev.off()

Notice how the canvas' margins are relatively far from the plotting  
area.




'frraid I an't help ya' padna'

First I tried your code:

 Cairo(example.pdf,  
type=pdf,width=12,height=12,units=cm,dpi=300)

Error: could not find function Cairo

Then I tried:

 cairo_pdf(example.pdf,  
type=pdf,width=12,height=12,units=cm,dpi=300)
Error in cairo_pdf(example.pdf, type = pdf, width = 12, height =  
12,  :

  unused argument(s) (type = pdf, units = cm, dpi = 300)

So I guess someone with your as yet unstated OS can take over now.


--
David.



Thanks,

Eduardo

On Thu, Jan 6, 2011 at 1:00 AM, David Winsemius dwinsem...@comcast.net 
 wrote:


On Jan 5, 2011, at 9:38 PM, Eduardo de Oliveira Horta wrote:

Hello,

I want to save a pdf plot using Cairo, but the canvas of the saved  
file

seems too large when compared to the actual plotted area.

Is there a way to control the relation between the canvas size and  
the size

of actual plotting area?


OS?,  ... example?

==

David Winsemius, MD
West Hartford, CT




David Winsemius, MD
West Hartford, CT

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Cairo pdf canvas size

2011-01-05 Thread Peter Langfelder
On Wed, Jan 5, 2011 at 7:35 PM, Eduardo de Oliveira Horta
eduardo.oliveiraho...@gmail.com wrote:
 Something like this:

 u=seq(from=-pi, to=pi, length=1000)
 f=sin(u)
 Cairo(example.pdf, type=pdf,width=12,height=12,units=cm,dpi=300)
 par(cex.axis=.6,col.axis=grey,ann=FALSE, lwd=.25,bty=n, las=1, tcl=-.2,
 mgp=c(3,.5,0))
 xlim=c(-pi,pi)
 ylim=round(c(min(f),max(f)))
 plot(u,f,xlim,ylim,type=l,col=firebrick3, axes=FALSE)
 axis(side=1, lwd=.25, col=darkgrey, at=seq(from=xlim[1], to=xlim[2],
 length=5))
 axis(side=2, lwd=.25, col=darkgrey, at=seq(from=ylim[1], to=ylim[2],
 length=5))
 abline(v=seq(from=xlim[1], to=xlim[2], length=5), lwd=.25,lty=dotted,
 col=grey)
 abline(h=seq(from=ylim[1], to=ylim[2], length=5), lwd=.25,lty=dotted,
 col=grey)
 dev.off()




Wow, you must like light colors :)

To the point, just set margins, for example

par(mar = c(2,2,0.5, 0.5))

(margins are bottom, left, top, right)

after the Cairo command.

BTW, Cairo doesn't work for me either... but I tried your example by
plotting to the screen.

Peter




 Notice how the canvas' margins are relatively far from the plotting area.

 Thanks,

 Eduardo

 On Thu, Jan 6, 2011 at 1:00 AM, David Winsemius dwinsem...@comcast.netwrote:


 On Jan 5, 2011, at 9:38 PM, Eduardo de Oliveira Horta wrote:

  Hello,

 I want to save a pdf plot using Cairo, but the canvas of the saved file
 seems too large when compared to the actual plotted area.

 Is there a way to control the relation between the canvas size and the
 size
 of actual plotting area?


 OS?,  ... example?

 ==

 David Winsemius, MD
 West Hartford, CT



        [[alternative HTML version deleted]]

 __
 R-help@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
 and provide commented, minimal, self-contained, reproducible code.


__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.