[R] lattice: how to use a log scale on the x-axis with the bwplot function
Deepayan Sarkar
deep@y@n@@@rk@r @end|ng |rom gm@||@com
Sun Dec 11 17:48:37 CET 2022
On Sun, Dec 11, 2022 at 2:33 PM Laurent Rhelp <LaurentRHelp using free.fr> wrote:
>
> I understand the idea but I did not succeed.
>
> Here is what I tried:
>
> ## 1. middles of classes calculation
>
> m <- tapply(DF$x, groups, mean)
>
> ## 2. create a new factor columns with the levels deduced from
> ## the values of the middles of the classes
> ##
>
> DF$m <- DF$groups
> levels(DF$m) <- as.character(m)
> DF$m <- as.numeric(levels(DF$m))[DF$m]
>
> ## 3. I verify with xyplot
>
> xyplot( y ~ m
> , type = "p"
> , data=DF
> , scales = list(
> y = list(log=T)
> , x = list(log=T)
>
> )
> )
> ## 4. I use the panel.groups and panel.bwplot to display the boxplots
> without success
>
> xyplot( y ~ m
> , groups = groups
> , type = "p"
> , data=DF
> , scales = list(
> y = list(log=T)
> , x = list(log=T)
> , panel = panel.superpose
> , panel.groups=function(x,y, group.number,...){
> panel.xyplot(x,y,...)
> panel.bwplot(x,y,...)
> }
> , horizontal = FALSE
> , box.width = .0001
> )
> )
You have a typo here: x = list(log=T) should be followed by a
close-paren to complete scales.
But I don't understand from your specification why you need groups and
panel.superpose etc. What is wrong with
xyplot( y ~ m
## , groups = groups # why?
, data=DF
, scales = list(
y = list(log=T)
, x = list(log=T)
)
, panel = panel.bwplot
, horizontal = FALSE
, box.width = .0001
)
?
And sorry for my wrong calculation of m earlier, but you can simplify
your version to
m <- tapply(DF$x, groups, mean)
DF$m <- as.vector(m[DF$groups])
Best,
-Deepayan
>
>
> thx
>
>
>
> Le 10/12/2022 à 17:02, Deepayan Sarkar a écrit :
> > 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 using 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 using 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.
>
>
>
> --
> Cet e-mail a été vérifié par le logiciel antivirus d'Avast.
> www.avast.com
More information about the R-help
mailing list