Re: [R] empty files created with trellis xyplot jpeg device

2012-01-01 Thread Mike Dahman
Thanks Michael.

That did the trick. Despite googling most of the day yesterday, I didn't
quite have the right search string to find that one. Almost feels like the
answer was hiding in plain sight, now that you point me to it.

I added some code to save the xyplots to a variable and then print it at
the end of the function.

before:

xyplot(...)

after:

xyp<-xyplot(...)
print(xyp)

Works great.

Regards,

-mike


On Sun, Jan 1, 2012 at 1:40 AM, R. Michael Weylandt <
michael.weyla...@gmail.com> wrote:

> I'm guessing R FAQ 7.22: http://cran.r-project.org/doc/FAQ/R-FAQ.html
>
> The subtlety is that in an interactive session print is automatically
> called at the final evaluation of most everything, but you have to
> prompt it in interactive use (and depending on details, in some
> function calls)
>
> Michael Weylandt
>
> On Sat, Dec 31, 2011 at 6:50 PM, Mike Dahman 
> wrote:
> > New years greetings.
> >
> > I have been setting up a function to generate multiple jpeg charts. When
> > the calls are issued at the interactive console, the jpeg files are
> > generated without an issue. When I try to issue the same calls from a
> > function, some chart files are empty. It appears to only be related to
> > trellis charts. Any help to troubleshoot this is appreciated.
> >
> > Regards,
> >
> > -mike
> >
> >
> > R version 2.14.0 (2011-10-31)
> > Copyright (C) 2011 The R Foundation for Statistical Computing
> > ISBN 3-900051-07-0
> > Platform: x86_64-unknown-linux-gnu (64-bit)
> >
> >
> > # validate devices
> >> capabilities()
> >jpeg  png tifftcltk  X11 aqua http/ftp  sockets
> >TRUEFALSEFALSEFALSE TRUEFALSE TRUE TRUE
> >  libxml fifo   clediticonv  NLS  profmemcairo
> >TRUE TRUE TRUE TRUE TRUEFALSEFALSE
> >
> > # Example functionality from the interactive console
> >
> > # I am going to use a zone variable to help duplicate the code in the
> > function
> >> zone
> > [1] "isoranp-z1"
> >
> > # call a function to pull in data and assign it to a data frame
> >> testz<-get_zonedata_url(2011,51,zone)
> >
> > # validate the data frame
> >> str(testz)
> > 'data.frame':   2016 obs. of  14 variables:
> >  $ ts : Factor w/ 2016 levels "12/18/2011 00:00",..: 1 2 3 4 5 6 7 8
> 9
> > 10 ...
> >  $ server : Factor w/ 1 level "phx1npf4sn2": 1 1 1 1 1 1 1 1 1 1 ...
> >  $ zone   : Factor w/ 1 level "isoranp-z1": 1 1 1 1 1 1 1 1 1 1 ...
> >  $ pool   : Factor w/ 1 level "ORA-S1": 1 1 1 1 1 1 1 1 1 1 ...
> >  $ cpucap : num  4 4 4 4 4 4 4 4 4 4 ...
> >  $ memcap : int  26 26 26 26 26 26 26 26 26 26 ...
> >  $ swapcap: int  26 26 26 26 26 26 26 26 26 26 ...
> >  $ cpu: num  78.2 206.8 198.4 366.4 112.1 ...
> >  $ poolsz : int  42 42 42 42 42 42 42 42 42 42 ...
> >  $ mem: num  75.5 75.3 75.6 74.5 74.3 ...
> >  $ swp: num  80.2 80.1 79.6 79 78.9 ...
> >  $ dates  : chr  "12/18/2011" "12/18/2011" "12/18/2011" "12/18/2011" ...
> >  $ times  : chr  "00:00:00" "00:05:00" "00:10:00" "00:15:00" ...
> >  $ dt :Classes 'chron', 'dates', 'times'  atomic [1:2016] 15326 15326
> > 15326 15326 15326 ...
> >  .. ..- attr(*, "format")= chr [1:2] "m/d/y" "h:m:s"
> >  .. ..- attr(*, "origin")= Named num [1:3] 1 1 1970
> >  .. .. ..- attr(*, "names")= chr [1:3] "month" "day" "year"
> >
> > # set up a jpeg device
> >> trellis.device(jpeg,file=paste("charts/",zone,".zone_util.jpg",sep=""))
> >
> > # call a function to generate the chart
> > # the plot_zone_util function uses xyplot
> >> plot_zone_util(testz)
> >
> > #close the device
> >> dev.off()
> >
> > The jpeg file is generated as expected:
> > (User and group has been removed)
> >
> > ls -l isoranp-z1.zone_util.jpg
> > -rw-rw-r-- 1 <> <> 32123 Dec 31 16:13 isoranp-z1.zone_util.jpg
> >
> > # here is the plot_zone_util function for reference
> > plot_zone_util <- function(zone_df){
> >
> >xyplot(cpu~dt|server,data=zone_df,ylim=c(0,100),
> >   main=paste(zone_df$zone[1]," CPU (Blue) & Memory (Red)
> > Util\n",zone_df$ts[1],"-",zone_df$ts[nrow(zone_df)],sep=""),
> >   xlab="date",
> >   ylab="utilization (%)",
> >   panel=function(x,y,subscripts){
> >   panel.lines(x,y)
> >
> >  panel.lines(zone_df$dt[subscripts],zone_df$mem[subscripts],col="red")
> >}, as.Table=T, subscripts=T)
> > }
> >
> >
> > ##
> >
> > # Try and do the same thing within a function:::
> >
> >> gen_zone_charts(zone,2011,51)
> >
> > # Note the zone_util.jpg file is zero length. It is a lattice chart.
> > The other two charts generate ok. User and group has been removed.
> >
> > -rw-rw-r-- 1 <> <> 22376 Dec 31 16:20 isoranp-z1.zone_cpu.jpg
> > -rw-rw-r-- 1 <> <> 18910 Dec 31 16:20 isoranp-z1.zone_mem.jpg
> > -rw-rw-r-- 1 <> <> 0 Dec 31 16:20 isoranp-z1.zone_util.jpg
> >
> > # here is the gen_zone_charts function:
> >
> >> gen_zone_charts
> > function(zone,year,wk){
> >
> >data_frame<-get_zonedata_url(year,w

Re: [R] empty files created with trellis xyplot jpeg device

2012-01-01 Thread R. Michael Weylandt
I'm guessing R FAQ 7.22: http://cran.r-project.org/doc/FAQ/R-FAQ.html

The subtlety is that in an interactive session print is automatically
called at the final evaluation of most everything, but you have to
prompt it in interactive use (and depending on details, in some
function calls)

Michael Weylandt

On Sat, Dec 31, 2011 at 6:50 PM, Mike Dahman  wrote:
> New years greetings.
>
> I have been setting up a function to generate multiple jpeg charts. When
> the calls are issued at the interactive console, the jpeg files are
> generated without an issue. When I try to issue the same calls from a
> function, some chart files are empty. It appears to only be related to
> trellis charts. Any help to troubleshoot this is appreciated.
>
> Regards,
>
> -mike
>
>
> R version 2.14.0 (2011-10-31)
> Copyright (C) 2011 The R Foundation for Statistical Computing
> ISBN 3-900051-07-0
> Platform: x86_64-unknown-linux-gnu (64-bit)
>
>
> # validate devices
>> capabilities()
>    jpeg      png     tiff    tcltk      X11     aqua http/ftp  sockets
>    TRUE    FALSE    FALSE    FALSE     TRUE    FALSE     TRUE     TRUE
>  libxml     fifo   cledit    iconv      NLS  profmem    cairo
>    TRUE     TRUE     TRUE     TRUE     TRUE    FALSE    FALSE
>
> # Example functionality from the interactive console
>
> # I am going to use a zone variable to help duplicate the code in the
> function
>> zone
> [1] "isoranp-z1"
>
> # call a function to pull in data and assign it to a data frame
>> testz<-get_zonedata_url(2011,51,zone)
>
> # validate the data frame
>> str(testz)
> 'data.frame':   2016 obs. of  14 variables:
>  $ ts     : Factor w/ 2016 levels "12/18/2011 00:00",..: 1 2 3 4 5 6 7 8 9
> 10 ...
>  $ server : Factor w/ 1 level "phx1npf4sn2": 1 1 1 1 1 1 1 1 1 1 ...
>  $ zone   : Factor w/ 1 level "isoranp-z1": 1 1 1 1 1 1 1 1 1 1 ...
>  $ pool   : Factor w/ 1 level "ORA-S1": 1 1 1 1 1 1 1 1 1 1 ...
>  $ cpucap : num  4 4 4 4 4 4 4 4 4 4 ...
>  $ memcap : int  26 26 26 26 26 26 26 26 26 26 ...
>  $ swapcap: int  26 26 26 26 26 26 26 26 26 26 ...
>  $ cpu    : num  78.2 206.8 198.4 366.4 112.1 ...
>  $ poolsz : int  42 42 42 42 42 42 42 42 42 42 ...
>  $ mem    : num  75.5 75.3 75.6 74.5 74.3 ...
>  $ swp    : num  80.2 80.1 79.6 79 78.9 ...
>  $ dates  : chr  "12/18/2011" "12/18/2011" "12/18/2011" "12/18/2011" ...
>  $ times  : chr  "00:00:00" "00:05:00" "00:10:00" "00:15:00" ...
>  $ dt     :Classes 'chron', 'dates', 'times'  atomic [1:2016] 15326 15326
> 15326 15326 15326 ...
>  .. ..- attr(*, "format")= chr [1:2] "m/d/y" "h:m:s"
>  .. ..- attr(*, "origin")= Named num [1:3] 1 1 1970
>  .. .. ..- attr(*, "names")= chr [1:3] "month" "day" "year"
>
> # set up a jpeg device
>> trellis.device(jpeg,file=paste("charts/",zone,".zone_util.jpg",sep=""))
>
> # call a function to generate the chart
> # the plot_zone_util function uses xyplot
>> plot_zone_util(testz)
>
> #close the device
>> dev.off()
>
> The jpeg file is generated as expected:
> (User and group has been removed)
>
> ls -l isoranp-z1.zone_util.jpg
> -rw-rw-r-- 1 <> <> 32123 Dec 31 16:13 isoranp-z1.zone_util.jpg
>
> # here is the plot_zone_util function for reference
> plot_zone_util <- function(zone_df){
>
>    xyplot(cpu~dt|server,data=zone_df,ylim=c(0,100),
>           main=paste(zone_df$zone[1]," CPU (Blue) & Memory (Red)
> Util\n",zone_df$ts[1],"-",zone_df$ts[nrow(zone_df)],sep=""),
>           xlab="date",
>           ylab="utilization (%)",
>           panel=function(x,y,subscripts){
>               panel.lines(x,y)
>
>  panel.lines(zone_df$dt[subscripts],zone_df$mem[subscripts],col="red")
>    }, as.Table=T, subscripts=T)
> }
>
>
> ##
>
> # Try and do the same thing within a function:::
>
>> gen_zone_charts(zone,2011,51)
>
> # Note the zone_util.jpg file is zero length. It is a lattice chart.
> The other two charts generate ok. User and group has been removed.
>
> -rw-rw-r-- 1 <> <> 22376 Dec 31 16:20 isoranp-z1.zone_cpu.jpg
> -rw-rw-r-- 1 <> <> 18910 Dec 31 16:20 isoranp-z1.zone_mem.jpg
> -rw-rw-r-- 1 <> <>     0 Dec 31 16:20 isoranp-z1.zone_util.jpg
>
> # here is the gen_zone_charts function:
>
>> gen_zone_charts
> function(zone,year,wk){
>
>        data_frame<-get_zonedata_url(year,wk,zone)
>
>        # this results in a 0 length file
> # i have tried using jpeg(), and trellis.device() with the same results
>        #jpeg(file=paste("charts/",zone,".zone_util.jpg",sep=""))
>
> trellis.device(jpeg,file=paste("charts/",zone,".zone_util.jpg",sep=""))
>        #uses xyplot - works fine being called from the console
>        plot_zone_util(data_frame)
>        dev.off()
>
>        # this works ok
>        jpeg(file=paste("charts/",zone,".zone_cpu.jpg",sep=""))
>        # uses combination of boxplot and plot with a preceeding par()
>        plot_zone_cpu(data_frame)
>        dev.off()
>
>        # this works ok
>        jpeg(file=paste("charts/",zone,".zone_mem.jpg",sep=""))
>        # uses combination of plot and plot with 

[R] empty files created with trellis xyplot jpeg device

2011-12-31 Thread Mike Dahman
New years greetings.

I have been setting up a function to generate multiple jpeg charts. When
the calls are issued at the interactive console, the jpeg files are
generated without an issue. When I try to issue the same calls from a
function, some chart files are empty. It appears to only be related to
trellis charts. Any help to troubleshoot this is appreciated.

Regards,

-mike


R version 2.14.0 (2011-10-31)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-unknown-linux-gnu (64-bit)


# validate devices
> capabilities()
jpeg  png tifftcltk  X11 aqua http/ftp  sockets
TRUEFALSEFALSEFALSE TRUEFALSE TRUE TRUE
  libxml fifo   clediticonv  NLS  profmemcairo
TRUE TRUE TRUE TRUE TRUEFALSEFALSE

# Example functionality from the interactive console

# I am going to use a zone variable to help duplicate the code in the
function
> zone
[1] "isoranp-z1"

# call a function to pull in data and assign it to a data frame
> testz<-get_zonedata_url(2011,51,zone)

# validate the data frame
> str(testz)
'data.frame':   2016 obs. of  14 variables:
 $ ts : Factor w/ 2016 levels "12/18/2011 00:00",..: 1 2 3 4 5 6 7 8 9
10 ...
 $ server : Factor w/ 1 level "phx1npf4sn2": 1 1 1 1 1 1 1 1 1 1 ...
 $ zone   : Factor w/ 1 level "isoranp-z1": 1 1 1 1 1 1 1 1 1 1 ...
 $ pool   : Factor w/ 1 level "ORA-S1": 1 1 1 1 1 1 1 1 1 1 ...
 $ cpucap : num  4 4 4 4 4 4 4 4 4 4 ...
 $ memcap : int  26 26 26 26 26 26 26 26 26 26 ...
 $ swapcap: int  26 26 26 26 26 26 26 26 26 26 ...
 $ cpu: num  78.2 206.8 198.4 366.4 112.1 ...
 $ poolsz : int  42 42 42 42 42 42 42 42 42 42 ...
 $ mem: num  75.5 75.3 75.6 74.5 74.3 ...
 $ swp: num  80.2 80.1 79.6 79 78.9 ...
 $ dates  : chr  "12/18/2011" "12/18/2011" "12/18/2011" "12/18/2011" ...
 $ times  : chr  "00:00:00" "00:05:00" "00:10:00" "00:15:00" ...
 $ dt :Classes 'chron', 'dates', 'times'  atomic [1:2016] 15326 15326
15326 15326 15326 ...
  .. ..- attr(*, "format")= chr [1:2] "m/d/y" "h:m:s"
  .. ..- attr(*, "origin")= Named num [1:3] 1 1 1970
  .. .. ..- attr(*, "names")= chr [1:3] "month" "day" "year"

# set up a jpeg device
> trellis.device(jpeg,file=paste("charts/",zone,".zone_util.jpg",sep=""))

# call a function to generate the chart
# the plot_zone_util function uses xyplot
> plot_zone_util(testz)

#close the device
> dev.off()

The jpeg file is generated as expected:
(User and group has been removed)

ls -l isoranp-z1.zone_util.jpg
-rw-rw-r-- 1 <> <> 32123 Dec 31 16:13 isoranp-z1.zone_util.jpg

# here is the plot_zone_util function for reference
plot_zone_util <- function(zone_df){

xyplot(cpu~dt|server,data=zone_df,ylim=c(0,100),
   main=paste(zone_df$zone[1]," CPU (Blue) & Memory (Red)
Util\n",zone_df$ts[1],"-",zone_df$ts[nrow(zone_df)],sep=""),
   xlab="date",
   ylab="utilization (%)",
   panel=function(x,y,subscripts){
   panel.lines(x,y)

 panel.lines(zone_df$dt[subscripts],zone_df$mem[subscripts],col="red")
}, as.Table=T, subscripts=T)
}


##

# Try and do the same thing within a function:::

> gen_zone_charts(zone,2011,51)

# Note the zone_util.jpg file is zero length. It is a lattice chart.
The other two charts generate ok. User and group has been removed.

-rw-rw-r-- 1 <> <> 22376 Dec 31 16:20 isoranp-z1.zone_cpu.jpg
-rw-rw-r-- 1 <> <> 18910 Dec 31 16:20 isoranp-z1.zone_mem.jpg
-rw-rw-r-- 1 <> <> 0 Dec 31 16:20 isoranp-z1.zone_util.jpg

# here is the gen_zone_charts function:

> gen_zone_charts
function(zone,year,wk){

data_frame<-get_zonedata_url(year,wk,zone)

# this results in a 0 length file
# i have tried using jpeg(), and trellis.device() with the same results
#jpeg(file=paste("charts/",zone,".zone_util.jpg",sep=""))

trellis.device(jpeg,file=paste("charts/",zone,".zone_util.jpg",sep=""))
#uses xyplot - works fine being called from the console
plot_zone_util(data_frame)
dev.off()

# this works ok
jpeg(file=paste("charts/",zone,".zone_cpu.jpg",sep=""))
# uses combination of boxplot and plot with a preceeding par()
plot_zone_cpu(data_frame)
dev.off()

# this works ok
jpeg(file=paste("charts/",zone,".zone_mem.jpg",sep=""))
# uses combination of plot and plot with a preceeding par()
plot_zone_mem(data_frame)
dev.off()

}

[[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.