0

ラティス bwplot の各ボックスとウィスカーの統計の一部にラベルを付けたいと思います。以下の一般的な例。

#---Some dummy data
Rock<-c("Rock1","Rock2","Rock3")
Zone<-as.data.frame(c("Zone10","Zone11","Zone12"))
Domain<-as.data.frame(c("Domain1","Domain2"))
Dt <- as.data.frame(rnorm(100))
Dt<-merge(Dt,Zone)
Dt<-merge(Dt,Rock)
Dt<-merge(Dt,Domain)
names(Dt)<-c("Data","Zone","Rock","Domain")

#--- Use aggregate to get the number of values for each combination of three factors (100 each)
aggregate(Data~Rock*Zone*Domain,Dt,FUN=length)

require(lattice)
#--- create a lattice plot and attempt to label the number of value associated with each BnW
bwplot(Rock~Data|Zone*Domain,
    data=Dt,
    xlim=c(-5,5),
       panel=function(...){
        panel.bwplot(...)
        panel.text(-4,c(1,2,3),length(x))
    }

)

これはうまくいきません - ラベルが 100 ではなく 45 と表示される理由がわかりません。各パネルの各ボックスとウィスカーの長さ、平均、中央値などにアクセスする方法が必要ですか?

4

1 に答える 1

0

値を自分で計算する必要があると思います。これは、たとえば plyr パッケージを使用すると簡単です (ただし、集計で作業を続けることもできます)。

library(plyr)
agg=ddply(Dt,c("Zone","Rock","Domain"),summarise,length=length(Data), max=max(Data),median=median(Data))  # max or median or ... to have the xvalues were you want to plot the values of length

require(lattice)
bwplot(Rock~Data|Zone*Domain,
   data=Dt,
   xlim=c(-5,5),
   panel=function(...){
     panel.bwplot(...)
     panel.text(agg$max+1,c(1,2,3),agg$length)  # plus one to not mask the last dot
   }
   )
于 2014-10-06T13:04:22.190 に答える