On 6/12/07, Alan S Barnett <[EMAIL PROTECTED]> wrote:
> 1) I have a data that includes some "bad" data.  I want to make a
> trellis plot where each panel contains
> a) A scatter plot of the "good" data
> b) A scatter plot of the "bad" data in a different color
> c) A best fit line of all the data, and
> d) A best fit line of the "good" data.
>
> I tried using xyplot and setting the "group" argument, but I'm having
> trouble.  Here is my code:
>
> xyplot(y ~ x | status, data=data,groups=good,
> +  panel=function(x,y,...){
> +  panel.xyplot(x,y,...)
> +  panel.lmline(x,y,col = "red")
> +  panel.lmline(x[good],y[good],col = "blue")
> + }
> + )

You are close, except the last panel.lmline call is not meaningful
because the 'x' and 'y' in the panel function are not the same length
as 'good'.  You need to use 'subscripts' for that.

To fix ideas, here's a concrete example (I've changed the names 'x'
and 'y' to 'xx' and 'yy' to avoid any confusion):


mydata <-
    data.frame(xx = sample(100),
               yy = rnorm(100) + rep(c(5, 10), c(80, 20)),
               status = gl(5, 1, 100),
               good = rep(c(TRUE, FALSE), c(80, 20)))

Then, what you want can be achieved with:

xyplot(yy ~ xx | status, mydata, groups = good,

       panel = function(x, y, groups, subscripts, ...) {
           panel.xyplot(x, y,
                        groups = groups,
                        subscripts = subscripts,
                        ...)
           panel.lmline(x, y, col = "red")
           good.id <- groups[subscripts]
           ## good.id: subset of 'good' relevant for this panel
           panel.lmline(x[good.id], y[good.id], col = "blue")
       })

This also works if 'good' is globally visible and not in 'mydata'.

[...]

> 2) There are 5 different values of status, but I only want to plot three
> of them.  Can I do this without copying only the desired elements into a
> new data frame?

Sure, just use the additional argument

  subset = (status %in% c("1", "3", "5"))

or whatever the appropriate subset is.

-Deepayan

______________________________________________
R-help@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
and provide commented, minimal, self-contained, reproducible code.

Reply via email to