[R] conditioning variable in panel.xyplot?

Deepayan Sarkar deepayan.sarkar at gmail.com
Sat Mar 6 06:28:04 CET 2010


On Fri, Mar 5, 2010 at 12:45 PM, Seth W Bigelow <sbigelow at fs.fed.us> wrote:
> I'm stumped after an hour or so reading about subscripts in panel.xyplot.
> Apparently the panel function is executed for each subset of data in the
> main dataset (specified by the conditioning variable, 'site' in my
> example), and the 'subscripts' keyword passes a vector of the
> corresponding row numbers to the panel function. But, if I want the panel
> function to simultaneously plot data from a different dataframe, as in the
> example below, I don't understand how having a vector of row numbers from
> a subset of the dataframe used in the main xyplot statement helps me with
> selecting data from an entirely different dataframe ('q' in my example).

It doesn't (I didn't read your original question carefully enough).

Look at ?which.packet. Continuing your example,

q.split <- split(q, q$site)

mypanel <- function(..., alt.data) {
    with(alt.data[[ which.packet()[1] ]],
         panel.xyplot(x = x, y = y, col="red"))
    panel.xyplot(...)
}

xyplot(y ~ x | site, d, alt.data = q.split,
       panel = mypanel)

-Deepayan

>
> library(lattice)
>
> d <- data.frame(site  = c(rep("A",12), rep("B",12)),
> x=rnorm(24),y=rnorm(24))
> q <- data.frame(site  = c(rep("A",7), rep("B",7)),
> x=rnorm(14),y=rnorm(14))
>
> mypanel <- function(...){
>                panel.xyplot(q$x, q$y, col="red")
>                panel.xyplot(...)}
>
> xyplot(y ~ x | site, d,
>        panel = mypanel
>        )
>
> --Seth
>
>
> On Thu, Mar 4, 2010 at 4:42 PM, Seth W Bigelow <sbigelow at fs.fed.us> wrote:
>> I wish to create a multipanel plot (map) from several datasets ("d" and
>> "q" in the example below). I can condition the main xyplot statement on
>> the "site" variable, but I don't know how to pass a conditioning
> variable
>> to panel.xyplot plot so that the x-y coordinates from dataset q are only
>> plotted at the appropriate site.
>
> The keyword is 'subscripts'. Look at the entry for 'panel' in ?xyplot,
> and let us know if you still have doubts.
>
> -Deepayan
>
>>
>>
>> library(lattice)
>> d <- data.frame(site  = c(rep("A",12), rep("B",12)),
>> x=rnorm(24),y=rnorm(24))                        # Create dataframe "d",
>> with 12 x-y coordinates for each site
>> q <- data.frame(site  = c(rep("A",7), rep("B",7)),
>> x=rnorm(14),y=rnorm(14))                        # Create dataframe "q",
>> with 7 pairs of x-y coordinates for each site.
>>
>> mypanel <- function(...){
>>        panel.xyplot(q$x, q$y, col="red")               # Statement that
>> needs a "Site" conditioning variable
>>        panel.xyplot(...)}
>>
>> xyplot(y~x|site, d, panel=mypanel)      # Statement erroneously plots
> all
>> 14 x-y points in "q" on panels for sites A & B
>>
>>
>>
>> Dr. Seth  W. Bigelow
>> Biologist, USDA-FS Pacific Southwest Research Station
>> 1731 Research Park Drive, Davis California
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at 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 at 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.
>



More information about the R-help mailing list