Laurent Rhelp
2022-Dec-10 14:15 UTC
[R] lattice: how to use a log scale on the x-axis with the bwplot function
Dear R-Help list, ?? I would like to use bwplot from the lattice package with a log scale both on the x-axis and the y-axis but I do not know how to do that because I do not know how to change the factor x-axis in a numeric x-axis. ?Here is my example: library(lattice) # the mock data y <- runif(100000,min=0, max=500) x <- seq(0,500,length=length(y)) # I cut the x variable to create a factor variable in order to calculate the boxes groups <- cut(x,10,ordered_result = TRUE) # creating the dataframe for the lattice functions DF <- data.frame( x= x , y = y, groups = groups) ## ok for xyplot xyplot(?? y ~ x ????????? , data=DF ????????? , scales = list( ??????????? y = list(log=T) ??????????? , x = list(log=T) ????????? ) ) ## ok for bwplot with the log scale for the y-axis bwplot( y ~ groups ????????? , data=DF ????????? , scales = list( ??????????? y = list(log=T) ??????????? #???? , x = list(log=T) ????????? ) ) ## Non ok for bwplot with the log scale for the x-axis bwplot( y ~ groups ??????? , data=DF ??????? , scales = list( ????????????? y = list(log=T) ??????????? , x = list(log=T) ??????? ) ) which gives an error because the x-axis is a factor, I would like to replace it for the display by the meddle of every class for example and put a log scale on the x-axis. Thank you for your help Best regards Laurent -- Cet e-mail a ?t? v?rifi? par le logiciel antivirus d'Avast. www.avast.com
Deepayan Sarkar
2022-Dec-10 16:02 UTC
[R] lattice: how to use a log scale on the x-axis with the bwplot function
Log-scales for the "factor" variable in bwplot() is not allowed. You could, however, use the panel function panel.bwplot() with xyplot(num ~ num). The potential problem with that is the box widths, which panel.bwplot() will not know how to compute. See if the following gives you a reasonable starting point: DF <- within(DF, m <- tapply(y, groups, mean)) xyplot(y ~ m, DF, scales = list(log = TRUE), panel = panel.bwplot, horizontal = FALSE, box.width = .0001) Best, -Deepayan On Sat, Dec 10, 2022 at 7:46 PM Laurent Rhelp <LaurentRHelp at free.fr> wrote:> > Dear R-Help list, > > I would like to use bwplot from the lattice package with a log scale > both on > the x-axis and the y-axis but I do not know how to do that because I do > not know > how to change the factor x-axis in a numeric x-axis. > > Here is my example: > > > library(lattice) > > # the mock data > y <- runif(100000,min=0, max=500) > x <- seq(0,500,length=length(y)) > # I cut the x variable to create a factor variable in order to calculate > the boxes > groups <- cut(x,10,ordered_result = TRUE) > # creating the dataframe for the lattice functions > DF <- data.frame( x= x , y = y, groups = groups) > > > ## ok for xyplot > xyplot( y ~ x > , data=DF > , scales = list( > y = list(log=T) > , x = list(log=T) > > ) > ) > > ## ok for bwplot with the log scale for the y-axis > bwplot( y ~ groups > , data=DF > , scales = list( > y = list(log=T) > # , x = list(log=T) > > ) > ) > > > > ## Non ok for bwplot with the log scale for the x-axis > bwplot( y ~ groups > , data=DF > , scales = list( > y = list(log=T) > , x = list(log=T) > > ) > ) > which gives an error because the x-axis is a factor, I would like to > replace it > for the display by the meddle of every class for example and put a log > scale on the x-axis. > > Thank you for your help > Best regards > Laurent > > > > -- > Cet e-mail a ?t? v?rifi? par le logiciel antivirus d'Avast. > www.avast.com > > ______________________________________________ > 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.