I'm having difficulty following the help for those functions. My plot has a single conditioning factor with 12 levels. My factor.levels in a call to strip.default looks like this: factor.levels = expression(Needles~ "::"~alpha -pinene, Stems~ "::"~alpha -pinene, Needles~ "::"~beta -pinene, Stems~ "::"~beta -pinene, Needles~ ":: B?Phellandrene", Stems~ ":: B?Phellandrene", Needles~ ":: Camphene", Stems~ ":: Camphene", Needles~ ":: Myrcene", Stems~ ":: Myrcene", Needles~ ":: Limonene", Stems~ "::Limonene") Since there is only one factor, which.given must be 1. Likewise, var.name must be of length 1. What I can't understand is the argument which.panel. The help says: which.panel: vector of integers as long as the number of conditioning variables. The contents are indices specifying the current levels of each of the conditioning variables (thus, this would be unique for each distinct packet). This is identical to the return value of ?which.packet?, which is a more accurate name. So, that must be of length 1 also, according to the first sentence, but if I set it to 1, I get the first strip label repeated 12 times. Set it to 2, I get the second one 12 times. Set it to 1:2, it attempts to squash 2 strips in the space of 1, labelling the first one. I don't understand the second sentence at all. What do I do to get all 12 in their correct order? I couldn't find an example remotely like what I'm trying to do. Are there any pointers? TIA Patrick
It's a vector of **length** 1, not **value** 1. In your case it gives the index (1 to 12) of the level being drawn in the panel, which is used to draw the strip according to other strip parameters, esp. style. You seem to be making this way more difficult than you should. strip.default is the **function** being used to draw the strips in each panel. Generally speaking, you should not have to mess with arguments like which.panel and should probably use strip.custom() instead. Do carefully go through the examples in ?strip and ?xyplot. That may help. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Mon, Jun 27, 2016 at 7:59 PM, p_connolly <p_connolly at slingshot.co.nz> wrote:> I'm having difficulty following the help for those functions. > > My plot has a single conditioning factor with 12 levels. My > factor.levels in a call to strip.default looks like this: > > factor.levels = expression(Needles~ "::"~alpha -pinene, > Stems~ "::"~alpha -pinene, > Needles~ "::"~beta -pinene, > Stems~ "::"~beta -pinene, > Needles~ ":: B?Phellandrene", > Stems~ ":: B?Phellandrene", > Needles~ ":: Camphene", > Stems~ ":: Camphene", > Needles~ ":: Myrcene", > Stems~ ":: Myrcene", > Needles~ ":: Limonene", > Stems~ "::Limonene") > > Since there is only one factor, which.given must be 1. > Likewise, var.name must be of length 1. > > What I can't understand is the argument which.panel. The help says: > > which.panel: vector of integers as long as the number of conditioning > variables. The contents are indices specifying the current > levels of each of the conditioning variables (thus, this > would be unique for each distinct packet). This is identical > to the return value of ?which.packet?, which is a more > accurate name. > > So, that must be of length 1 also, according to the first sentence, > but if I set it to 1, I get the first strip label repeated 12 times. > Set it to 2, I get the second one 12 times. Set it to 1:2, it > attempts to squash 2 strips in the space of 1, labelling the first > one. I don't understand the second sentence at all. > > What do I do to get all 12 in their correct order? > > I couldn't find an example remotely like what I'm trying to do. Are > there any pointers? > > TIA > Patrick > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
Hi Patrick does this help? dat <- data.frame(x = rnorm(12*5,0,1), y = rnorm(12*5,0,1), gp = factor(1:12)) dat$NS = ifelse(sapply(dat$gp, pmatch,flN, nomatch = 0) > 0, "Needles","Stems") dat = dat[order(dat[,"NS"]),] dat$GP = factor(1:6) xyplot(y ~ x|gp, data = dat, par.settings = list(strip.background = list(col = "transparent") ), strip = strip.custom(factor.levels = expression(Needles~ "::"~alpha -pinene, Stems~ "::"~alpha -pinene, Needles~ "::"~beta -pinene, Stems~ "::"~beta -pinene, Needles~ ":: B?Phellandrene", Stems~ ":: B?Phellandrene", Needles~ ":: Camphene", Stems~ ":: Camphene", Needles~ ":: Myrcene", Stems~ ":: Myrcene", Needles~ ":: Limonene", Stems~ "::Limonene"), par.strip.text = list(cex = 0.65) )) library(latticeExtra) useOuterStrips(strip = strip.custom(factor.levels = expression("::"~alpha -pinene, "::"~beta -pinene, ":: B?Phellandrene", ":: Camphene", ":: Myrcene", ":: Limonene")), xyplot(y ~ x|GP*NS, data = dat, drop.unused = T, par.settings = list(strip.background = list(col = "transparent") ), par.strip.text = list(cex = 0.65) ) ) If you want to change the order of the factors assign the factor levels to a vector and order accordingly Regards Duncan Duncan Mackay Department of Agronomy and Soil Science University of New England Armidale NSW 2351 Email: home: mackay at northnet.com.au -----Original Message----- From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of p_connolly Sent: Tuesday, 28 June 2016 12:59 To: r-help at stat.math.ethz.ch Subject: [R] > Understanding strip.default & strip.custom I'm having difficulty following the help for those functions. My plot has a single conditioning factor with 12 levels. My factor.levels in a call to strip.default looks like this: factor.levels = expression(Needles~ "::"~alpha -pinene, Stems~ "::"~alpha -pinene, Needles~ "::"~beta -pinene, Stems~ "::"~beta -pinene, Needles~ ":: B?Phellandrene", Stems~ ":: B?Phellandrene", Needles~ ":: Camphene", Stems~ ":: Camphene", Needles~ ":: Myrcene", Stems~ ":: Myrcene", Needles~ ":: Limonene", Stems~ "::Limonene") Since there is only one factor, which.given must be 1. Likewise, var.name must be of length 1. What I can't understand is the argument which.panel. The help says: which.panel: vector of integers as long as the number of conditioning variables. The contents are indices specifying the current levels of each of the conditioning variables (thus, this would be unique for each distinct packet). This is identical to the return value of ?which.packet?, which is a more accurate name. So, that must be of length 1 also, according to the first sentence, but if I set it to 1, I get the first strip label repeated 12 times. Set it to 2, I get the second one 12 times. Set it to 1:2, it attempts to squash 2 strips in the space of 1, labelling the first one. I don't understand the second sentence at all. What do I do to get all 12 in their correct order? I couldn't find an example remotely like what I'm trying to do. Are there any pointers? TIA Patrick ______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.
On Mon, 27-Jun-2016 at 10:17PM -0700, Bert Gunter wrote: [...] |> |> You seem to be making this way more difficult than you should. Though I didn't get any closer to an understanding of which.panel, the question I asked was simply answered by panel.custom(factor.levels = <as before>) Thanks to Duncan Mackay also. -- ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~. ___ Patrick Connolly {~._.~} Great minds discuss ideas _( Y )_ Average minds discuss events (:_~*~_:) Small minds discuss people (_)-(_) ..... Eleanor Roosevelt ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.