PIKAL Petr
2022-Jan-17 13:31 UTC
[R] how to plot numeric variable against several categories with lattice bwplot?
Hi Luigi Not sure how to do it in lattice but in ggplot you could use for cycle for(i in 3:5) { print(ggplot(df, aes(x=df[,i], y=y))+geom_boxplot()+ xlab(names(df)[i])) } It is better to put plots to pdf file Cheers Petr> -----Original Message----- > From: R-help <r-help-bounces at r-project.org> On Behalf Of Luigi Marongiu > Sent: Monday, January 17, 2022 1:31 PM > To: Rolf Turner <r.turner at auckland.ac.nz> > Cc: r-help <r-help at r-project.org> > Subject: Re: [R] how to plot numeric variable against several categorieswith> lattice bwplot? > > Yes, I would like to have a boxplot of y against each of the othervariables, each> into a separate panel, without having to type the command for each pair (Ihave> 23 categories in the real data...). > Thank you for the solid line code (I thought it might have been a simple > parameter to add...) > > On Mon, Jan 17, 2022 at 4:22 AM Rolf Turner <r.turner at auckland.ac.nz> > wrote: > > > > > > On Thu, 13 Jan 2022 20:38:04 +0100 > > Luigi Marongiu <marongiu.luigi at gmail.com> wrote: > > > > > Hello, > > > I have a numerical variable (x) and a series of categories. I would > > > like to make a box plot of x against each of the categories. How can > > > I arrange the data so that I can accomplish it with lattice? > > > At the moment I got this: > > > ``` > > > df = data.frame(x = c(rep(1,5), rep(2,5), rep(3,5)), y = rnorm(15), > > > f1 = rep(letters[1:5],3), > > > f2 = rep(letters[7:9],5), > > > f3 = c(rep(LETTERS[10:12],4), LETTERS[10:12])) df$x = factor(df$x) > > > df$f1 = factor(df$f1) > > > df$f2 = factor(df$f2) > > > df$f3 = factor(df$f3) > > > library(lattice) > > > bwplot(y ~ x, data = df, auto.key = TRUE ) ``` Also, is it possible > > > to have the wishers in solid line? > > > Thank you > > > > It is not at all clear to me what your are trying to do. If you > > really want "to make a box plot of x against each of the categories", > > you could just do: > > > > bwplot(x ~ f1, data = df, auto.key = TRUE ) bwplot(x ~ f2, data = df, > > auto.key = TRUE ) bwplot(x ~ f3, data = df, auto.key = TRUE ) > > > > successively. But perhaps you meant "y" rather than "x". Please > > clarify what you wish to accomplish. > > > > As to displaying the *whiskers* as solid lines ... that is one hell of > > a good question! I had to struggle: > > > > xxx <- trellis.par.get("box.umbrella") xxx$lty <- 1 > > trellis.par.set(box.umbrella=xxx) > > junk <- rnorm(42) > > bwplot(junk) > > > > That gave me a boxplot "lying on its side"; I wanted one "standing up". > > After a great deal more struggle I did > > > > crud <- factor(rep(1,42),labels="") > > bwplot(junk ~ crud,ylab="") > > > > which gave me what I was after. > > > > Perhaps others who are more knowledgeable than I could chip in with > > better ideas. > > > > But first Luigi must clarify what he wants to obtain. > > > > cheers, > > > > Rolf Turner > > > > -- > > Honorary Research Fellow > > Department of Statistics > > University of Auckland > > Phone: +64-9-373-7599 ext. 88276 > > > > > -- > Best regards, > Luigi > > ______________________________________________ > 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 guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.
Luigi Marongiu
2022-Jan-17 13:34 UTC
[R] how to plot numeric variable against several categories with lattice bwplot?
Thanks, I'll check it out! On Mon, Jan 17, 2022 at 2:31 PM PIKAL Petr <petr.pikal at precheza.cz> wrote:> > Hi Luigi > > Not sure how to do it in lattice but in ggplot you could use for cycle > > for(i in 3:5) { > print(ggplot(df, aes(x=df[,i], y=y))+geom_boxplot()+ xlab(names(df)[i])) > } > > It is better to put plots to pdf file > > Cheers > Petr > > > -----Original Message----- > > From: R-help <r-help-bounces at r-project.org> On Behalf Of Luigi Marongiu > > Sent: Monday, January 17, 2022 1:31 PM > > To: Rolf Turner <r.turner at auckland.ac.nz> > > Cc: r-help <r-help at r-project.org> > > Subject: Re: [R] how to plot numeric variable against several categories > with > > lattice bwplot? > > > > Yes, I would like to have a boxplot of y against each of the other > variables, each > > into a separate panel, without having to type the command for each pair (I > have > > 23 categories in the real data...). > > Thank you for the solid line code (I thought it might have been a simple > > parameter to add...) > > > > On Mon, Jan 17, 2022 at 4:22 AM Rolf Turner <r.turner at auckland.ac.nz> > > wrote: > > > > > > > > > On Thu, 13 Jan 2022 20:38:04 +0100 > > > Luigi Marongiu <marongiu.luigi at gmail.com> wrote: > > > > > > > Hello, > > > > I have a numerical variable (x) and a series of categories. I would > > > > like to make a box plot of x against each of the categories. How can > > > > I arrange the data so that I can accomplish it with lattice? > > > > At the moment I got this: > > > > ``` > > > > df = data.frame(x = c(rep(1,5), rep(2,5), rep(3,5)), y = rnorm(15), > > > > f1 = rep(letters[1:5],3), > > > > f2 = rep(letters[7:9],5), > > > > f3 = c(rep(LETTERS[10:12],4), LETTERS[10:12])) df$x = factor(df$x) > > > > df$f1 = factor(df$f1) > > > > df$f2 = factor(df$f2) > > > > df$f3 = factor(df$f3) > > > > library(lattice) > > > > bwplot(y ~ x, data = df, auto.key = TRUE ) ``` Also, is it possible > > > > to have the wishers in solid line? > > > > Thank you > > > > > > It is not at all clear to me what your are trying to do. If you > > > really want "to make a box plot of x against each of the categories", > > > you could just do: > > > > > > bwplot(x ~ f1, data = df, auto.key = TRUE ) bwplot(x ~ f2, data = df, > > > auto.key = TRUE ) bwplot(x ~ f3, data = df, auto.key = TRUE ) > > > > > > successively. But perhaps you meant "y" rather than "x". Please > > > clarify what you wish to accomplish. > > > > > > As to displaying the *whiskers* as solid lines ... that is one hell of > > > a good question! I had to struggle: > > > > > > xxx <- trellis.par.get("box.umbrella") xxx$lty <- 1 > > > trellis.par.set(box.umbrella=xxx) > > > junk <- rnorm(42) > > > bwplot(junk) > > > > > > That gave me a boxplot "lying on its side"; I wanted one "standing up". > > > After a great deal more struggle I did > > > > > > crud <- factor(rep(1,42),labels="") > > > bwplot(junk ~ crud,ylab="") > > > > > > which gave me what I was after. > > > > > > Perhaps others who are more knowledgeable than I could chip in with > > > better ideas. > > > > > > But first Luigi must clarify what he wants to obtain. > > > > > > cheers, > > > > > > Rolf Turner > > > > > > -- > > > Honorary Research Fellow > > > Department of Statistics > > > University of Auckland > > > Phone: +64-9-373-7599 ext. 88276 > > > > > > > > > -- > > Best regards, > > Luigi > > > > ______________________________________________ > > 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.-- Best regards, Luigi
Deepayan Sarkar
2022-Jan-17 13:48 UTC
[R] how to plot numeric variable against several categories with lattice bwplot?
On Mon, Jan 17, 2022 at 7:01 PM PIKAL Petr <petr.pikal at precheza.cz> wrote:> > Hi Luigi > > Not sure how to do it in lattice but in ggplot you could use for cycle > > for(i in 3:5) { > print(ggplot(df, aes(x=df[,i], y=y))+geom_boxplot()+ xlab(names(df)[i])) > } > > It is better to put plots to pdf filePretty much the same with lattice, e.g., flist <- sprintf("y ~ %s", setdiff(names(df), "y")) plist <- lapply(flist, function(f) bwplot(as.formula(f), df)) print(plist) You could then use latticeExtra::c.trellis() to combine them into a single plot, but YMMV. library(latticeExtra) names(plist) <- flist do.call(c, plist) Best, -Deepayan> > Cheers > Petr > > > -----Original Message----- > > From: R-help <r-help-bounces at r-project.org> On Behalf Of Luigi Marongiu > > Sent: Monday, January 17, 2022 1:31 PM > > To: Rolf Turner <r.turner at auckland.ac.nz> > > Cc: r-help <r-help at r-project.org> > > Subject: Re: [R] how to plot numeric variable against several categories > with > > lattice bwplot? > > > > Yes, I would like to have a boxplot of y against each of the other > variables, each > > into a separate panel, without having to type the command for each pair (I > have > > 23 categories in the real data...). > > Thank you for the solid line code (I thought it might have been a simple > > parameter to add...) > > > > On Mon, Jan 17, 2022 at 4:22 AM Rolf Turner <r.turner at auckland.ac.nz> > > wrote: > > > > > > > > > On Thu, 13 Jan 2022 20:38:04 +0100 > > > Luigi Marongiu <marongiu.luigi at gmail.com> wrote: > > > > > > > Hello, > > > > I have a numerical variable (x) and a series of categories. I would > > > > like to make a box plot of x against each of the categories. How can > > > > I arrange the data so that I can accomplish it with lattice? > > > > At the moment I got this: > > > > ``` > > > > df = data.frame(x = c(rep(1,5), rep(2,5), rep(3,5)), y = rnorm(15), > > > > f1 = rep(letters[1:5],3), > > > > f2 = rep(letters[7:9],5), > > > > f3 = c(rep(LETTERS[10:12],4), LETTERS[10:12])) df$x = factor(df$x) > > > > df$f1 = factor(df$f1) > > > > df$f2 = factor(df$f2) > > > > df$f3 = factor(df$f3) > > > > library(lattice) > > > > bwplot(y ~ x, data = df, auto.key = TRUE ) ``` Also, is it possible > > > > to have the wishers in solid line? > > > > Thank you > > > > > > It is not at all clear to me what your are trying to do. If you > > > really want "to make a box plot of x against each of the categories", > > > you could just do: > > > > > > bwplot(x ~ f1, data = df, auto.key = TRUE ) bwplot(x ~ f2, data = df, > > > auto.key = TRUE ) bwplot(x ~ f3, data = df, auto.key = TRUE ) > > > > > > successively. But perhaps you meant "y" rather than "x". Please > > > clarify what you wish to accomplish. > > > > > > As to displaying the *whiskers* as solid lines ... that is one hell of > > > a good question! I had to struggle: > > > > > > xxx <- trellis.par.get("box.umbrella") xxx$lty <- 1 > > > trellis.par.set(box.umbrella=xxx) > > > junk <- rnorm(42) > > > bwplot(junk) > > > > > > That gave me a boxplot "lying on its side"; I wanted one "standing up". > > > After a great deal more struggle I did > > > > > > crud <- factor(rep(1,42),labels="") > > > bwplot(junk ~ crud,ylab="") > > > > > > which gave me what I was after. > > > > > > Perhaps others who are more knowledgeable than I could chip in with > > > better ideas. > > > > > > But first Luigi must clarify what he wants to obtain. > > > > > > cheers, > > > > > > Rolf Turner > > > > > > -- > > > Honorary Research Fellow > > > Department of Statistics > > > University of Auckland > > > Phone: +64-9-373-7599 ext. 88276 > > > > > > > > > -- > > Best regards, > > Luigi > > > > ______________________________________________ > > 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. > ______________________________________________ > 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.