barplot_wrap <-function(x,...){
barW <- diff(c(0,x))
plot(x=x,y=rep(1,length(x)),pch=16,ylim=c(0,1),...,xaxt='n', yaxt='n',type="n",xlab='',ylab='',frame.plot=F)
rect(xleft=x-barW, ybottom=0, xright=x+barW,ytop=1,border=F,...)
}
density_barplot<-function(.tt,.vv,height=1,...){
# .tt: time point -> NO tie!!!
# .vv: density
.tt <- as.double(.tt)
.vv <- as.double(.vv)
n = length(.vv);
UU=max(diff(abs(range(.vv))),1/n)
cp = rainbow(n);
#Method 1: can't handle .tt offest(or add a c(0.0,0.0) records
#barplot(rep(height,n),width=diff(c(0,.tt)),col=cp[order(.vv)],border=F,space=0,...)
#Method 2: wrap rect
barplot_wrap(.tt,col=cp[order(.vv)],...)
}
dta <- data.frame(ts=sort(runif(100)), dens=sort(runif(100)))
dta2 <- data.frame(ts=sort(runif(40)), dens=sort(runif(40)))
par(mfrow=c(2,1))
density_barplot(dta$ts,dta$dens,main='test 1',xlim=c(0,1))
density_barplot(dta2$ts,dta2$dens,main='test 2',xlim=c(0,1))