简体   繁体   中英

How to create a bwplot with date on x-axis

users

thanks to the reply of @McQueenDon on r-nabble
http://r.789695.n4.nabble.com/boxplot-with-x-axis-time-td4686787.html#a4687746

I managed to produce a boxplot::base of a single variable with the x-axis correctly formatted and spaced for the date of acquisition.

What if I would like to produce it with bwplot::lattice? I need this because I would like also to use a conditional factor.

Here you are a reproducible example (thanks again to @McQueenDon )

data(iris) 
pippo= stack(iris[,-5]) 
pippo$date= rep(c("2013/01/29", "2013/03/01", "2013/11/01", 
              "2013/12/01", "2014/02/01", "2014/07/02"), 100) 
pippo$date= as.Date(pippo$date) 
boxplot(pippo$values ~ pippo$date) ## NOT exactly what I want 

bx<- boxplot(pippo$values ~ pippo$date, plot= F) 
bxp(bx, at=sort(unique(pippo$date))) # this is what I was looking for ! 

require(lattice) 
bwplot(values~date, pippo, horizontal=F) #dates looks not correctly spaced even though they are correctly ordered and formatted 
# finally I would like to condition to the 'ind' variable 
bwplot(values~date| ind, pippo, horizontal=F, layout= c(2,2)) 

Thanks

Giuseppe

How about

xyplot(values~date| ind, pippo, horizontal=F, layout= c(2,2), 
    panel=panel.bwplot, box.width=20) 

在此处输入图片说明

Here we use xyplot with a custom panel= parameter rather than bwplot because bwplot converts the x to a factor first which renumbers all the levels with sequential integers; xyplot does not do this.

If you wanted to label the exact dates, you could try

dts<-unique(pippo$date)
xyplot(values~date| ind, pippo, horizontal=F, layout= c(2,2), 
    panel=panel.bwplot, box.width=20,
    scales=list(x=list(at=dts)))

but that looks quote crowded in this particular example.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM