There can be **no log scale** for the x axis, only labels, if x is a
factor (Groups).
If what you mean is that there are no tick marks o the x-axis, they
can be added in my code in the scales list (for my reprex with 5
levels of group):
scales = list(
? ? ? ? ? alternating = 1? ## ticls only on bottom
? ? ? ? , y = list(log=T, tck = c(1,0))
? ? ? ? , x = list(at = 1:5, tck = 1)
? ? ? ? )
If this is not what you meant, you'll need to clarify ... or just move on.
-- Bert
On Sun, Dec 11, 2022 at 1:06 AM Laurent Rhelp <LaurentRHelp at free.fr>
wrote:
Ok for the labels but the x-axis is not displayed in log scale ?
Le 10/12/2022 ? 22:36, Bert Gunter a ?crit?:
... and here's a version where the x variable is different than
y. It's basically the same.
set.seed(123)
y <- runif(40,min=0, max= 10)
x <- seq(0,10, length = 40)
## 5 equally spaced groups labeled by log10 of the center
## of the intervals
xrng <- range(x)
eps <- .0001*c(-1,1)*diff(xrng) ## see ?cut
xrng <-xrng + eps
delta <- diff(xrng)/5 # 5 = number of intervals
brks <- seq(xrng[1], xrng[2],length.out =6)
labs <- round(log10(brks[-1] - delta/2), 2) ## log10 (centers)
groups <- cut(x,breaks = brks, ordered_result = TRUE,
? ? ? ? ? ? ? labels = paste0('10^',labs))
# creating the dataframe for the lattice functions
DF <- data.frame( y = y, groups = groups)
bwplot( y ~ groups
? ? ? ? , data=DF
? ? ? ? , scales = list(
? ? ? ? ? ?y = list(log=T)
? ? ? ? ),
)
On Sat, Dec 10, 2022 at 10:20 AM Bert Gunter
<bgunter.4567 at gmail.com> wrote:
If Deepayan's suggestion does not suit and especially *if* I
understand what you want to do correctly, then it seems to me
that it is straightforward to create the groups and group
labels manually:
## in verbose detail to hopefully improve clarity
set.seed(123) ## for reprex
y <- runif(40,min=0, max= 10)? ##*small* reprex
## cut y into 5 equally spaced groups labeled by log10 of the
center
## of the intervals
yrng <- range(y)
eps <- .0001*c(-1,1)*diff(yrng) ## see ?cut
yrng <-yrng + eps
delta <- diff(yrng)/5 # 5 = number of intervals
brks <- seq(yrng[1], yrng[2],length.out =6)
labs <- round(log10(brks[-1] - delta/2), 2) ## log10 (centers)
groups <- cut(y,breaks = brks,
? ? ? ? ? ? ? labels = paste0('10^',labs))
# creating the dataframe for the lattice functions
DF <- data.frame( y = y, groups = groups)
bwplot( y ~ groups
? ? ? ? , data=DF
? ? ? ? , scales = list(
? ? ? ? ? ?y = list(log=T)
? ? ? ? ),
)
## Of course, ignore if I have misunderstood.
Cheers,
Bert
On Sat, Dec 10, 2022 at 8:03 AM Deepayan Sarkar
<deepayan.sarkar at gmail.com> wrote:
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
> both on
> the x-axis and the y-axis but I do not know how to 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
> 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
> replace it
> for the display by the meddle of every class for
> 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 <http://www.avast.com>
>
> ______________________________________________