levalg<-function(tree, plot=T,data=F,crit=NULL, modelabel=TRUE,ptext=0,leimat=NULL,symbo=NULL, info=NULL,infolift=0,infopos=0,infochar=NULL, xmarginleft=0,xmarginright=0,ymargin=0, xlim=NULL,ylim=NULL, col="black",col.axis="black",linecol="black", pch=21, dimen=NULL, binlabel=NULL){ parent<-tree$parent level<-tree$level center<-tree$center if (is.null(center)){ nodenum<-length(parent) center<-matrix(1,dimen,nodenum) } mut<-multitree(parent) # create multitree roots<-mut$roots child<-mut$child sibling<-mut$sibling if (is.null(dimen)){ d<-dim(center)[1] } else{ d<-dimen } crit<-rep(0,d) # order so that 1st furthest from origo sibord<-siborder(mut,crit,center) mlkm<-moodilkm(parent) modloc<-mlkm$modloc modenum<-mlkm$lkm tree$center<-center modelinks<-siborToModor(tree) # make links in right order itemnum<-length(parent) verticalPos<-matrix(0,itemnum,1) step<-1/modenum curloc<-0 for (i in 1:modenum){ curmode<-modelinks[i] verticalPos[curmode]<-curloc curloc<-curloc+step } for (i in 1:modenum){ curnode<-modloc[i] par<-parent[curnode] while (par>0){ # calculate mid of children of par # go to the end of sibling list chi<-child[par] summa<-verticalPos[chi] childNum<-1 while(sibling[chi]>0){ chi<-sibling[chi] summa<-summa+verticalPos[chi] childNum<-childNum+1 } verticalPos[par]<-summa/childNum par<-parent[par] } } vPos<-verticalPos levve<-level numero<-0 for (i in 1:length(verticalPos)){ if (binlabel[i]==1){ numero<-numero+1 vPos[numero]<-verticalPos[i] levve[numero]<-level[i] } } vPos<-vPos[1:numero] levve<-levve[1:numero] if (is.null(ylim)) ylim<-c(0,max(level)+ptext+ymargin) xlim<-c(min(verticalPos)-xmarginleft,max(verticalPos)+xmarginright) plot(vPos,levve,xlab="",ylab="",xlim=xlim,ylim=ylim,xaxt="n",yaxt="n", col=col,col.axis=col.axis, pch=pch) for (i in 1:itemnum){ if ((parent[i]>0) && (binlabel[i]==1)){ xchild<-verticalPos[i] ychild<-level[i] xparent<-verticalPos[parent[i]] yparent<-level[parent[i]] segments(xparent,yparent,xchild,ychild,col=linecol) } } # lets plot info if (!is.null(info)){ ifo<-info numero<-0 for (i in 1:length(info)){ if (binlabel[i]==1){ numero<-numero+1 ifo[numero]<-info[i] } } ifo<-ifo[1:numero] nodenum<-numero infolocx<-matrix(nodenum,1) infolocy<-matrix(nodenum,1) for (i in 1:nodenum){ infolocx[i]<-vPos[i] infolocy[i]<-levve[i]+infolift } digits<-3 ifo<-format(ifo,digits=digits) adj<-NULL pos<-infopos text(infolocx,infolocy,ifo,pos,adj) } # lets plot character info if (!is.null(infochar)){ nodenum<-itemnum infolocx<-matrix(nodenum,1) infolocy<-matrix(nodenum,1) # for (i in 1:nodenum){ infolocx[i]<-verticalPos[i] infolocy[i]<-level[i]+infolift } pos<-infopos text(infolocx,infolocy,infochar,pos) } # lets plot labels for modes if (modelabel){ xcoor<-verticalPos ycoor<-level mlkm<-moodilkm(parent) modloc<-mlkm$modloc modenum<-length(modloc) modelocx<-matrix(0,modenum,1) modelocy<-matrix(0,modenum,1) if (is.null(leimat)){ if (is.null(symbo)){ labels<-paste("M",1:modenum,sep="") } else{ labels<-paste(symbo,1:modenum,sep="") } } else{ labels<-leimat } xcor<-matrix(0,modenum,1) for (i in 1:modenum){ loc<-modloc[i] xcor[i]<-xcoor[loc] } modloc<-omaord2(modloc,xcor) for (i in 1:modenum){ loc<-modloc[i] modelocx[i]<-xcoor[loc] modelocy[i]<-ycoor[loc]+ptext } text(modelocx,modelocy,labels) } } siborToModor<-function(tree) { data<-plotprof(tree,plot=F,data=T,cutlev=NULL,ptext=0,info=NULL, infolift=0,infopos=0) vecs<-data$vecs parent<-tree$parent mlkm<-moodilkm(parent) modloc<-mlkm$modloc moodinum<-mlkm$lkm #length(modloc) xcor<-matrix(0,moodinum,1) for (i in 1:moodinum){ loc<-modloc[i] xcor[i]<-vecs[loc,1] } modloc<-omaord2(modloc,xcor) return(modloc) } nodenum<-31 parent<-c(0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14, 15,15) level<- c(4,3,3,2,2,2,2,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) volume<-matrix(0,nodenum,1) tree<-list(parent=parent,level=level,volume=volume) info<-seq(1,31) binlabel<-matrix(1,31,1) binlabel[11]<-0 binlabel[22]<-0 binlabel[23]<-0 binlabel[26]<-0 binlabel[30]<-0 # frame levalg(tree,dimen=1,modelabel=F,info=info,xmarginright=0.05,infopos=-0.5, binlabel=binlabel)
# frame 1 plot("","",xlim=c(0,4),ylim=c(0,4),xlab="",ylab="", pch=21,cex=3) xgrid0<-c(0,2,4) ygrid0<-c(0,0,0) xgrid1<-c(0,2,4) ygrid1<-c(4,4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0,0) ygrid0<-c(0,4) xgrid1<-c(4,4) ygrid1<-c(0,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) text(1,2,"2") text(3,2,"3") # frame 2 plot("","",xlim=c(0,4),ylim=c(0,4),xlab="",ylab="",#axes=FALSE, pch=21,cex=3) xgrid0<-c(0,2,4) ygrid0<-c(0,0,0) xgrid1<-c(0,2,4) ygrid1<-c(4,4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0,0) ygrid0<-c(0,4) xgrid1<-c(4,4) ygrid1<-c(0,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(1,3) ygrid0<-c(0,0) xgrid1<-c(1,3) ygrid1<-c(4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) text(0.5,2,"4") text(1.5,2,"5") text(2.5,2,"6") text(3.5,2,"7") # frame 3 plot("","",xlim=c(0,4),ylim=c(0,4),xlab="",ylab="",#axes=FALSE, pch=21,cex=3) xgrid0<-c(0,2,4) ygrid0<-c(0,0,0) xgrid1<-c(0,2,4) ygrid1<-c(4,4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0,0) ygrid0<-c(0,4) xgrid1<-c(4,4) ygrid1<-c(0,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(1,3) ygrid0<-c(0,0) xgrid1<-c(1,3) ygrid1<-c(4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0) ygrid0<-c(2) xgrid1<-c(4) ygrid1<-c(2) segments(xgrid0,ygrid0,xgrid1,ygrid1) text(0.5,1,"8") text(1.5,1,"10") text(2.5,1,"12") text(3.5,1,"14") text(0.5,3,"9") text(2.5,3,"13") text(3.5,3,"15") # frame 4 plot("","",xlim=c(0,4),ylim=c(0,4),xlab="",ylab="",#axes=FALSE, pch=21,cex=3) xgrid0<-c(0,2,4) ygrid0<-c(0,0,0) xgrid1<-c(0,2,4) ygrid1<-c(4,4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0,0) ygrid0<-c(0,4) xgrid1<-c(4,4) ygrid1<-c(0,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(1,3) ygrid0<-c(0,0) xgrid1<-c(1,3) ygrid1<-c(4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0) ygrid0<-c(2) xgrid1<-c(4) ygrid1<-c(2) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0,0) ygrid0<-c(1,3) xgrid1<-c(4,4) ygrid1<-c(1,3) segments(xgrid0,ygrid0,xgrid1,ygrid1) text(0.5,0.5,"16") text(1.5,0.5,"20") text(2.5,0.5,"24") text(3.5,0.5,"28") text(0.5,1.5,"17") text(1.5,1.5,"21") text(2.5,1.5,"25") text(3.5,1.5,"29") text(0.5,2.5,"18") text(0.5,3.5,"19") text(2.5,3.5,"27") text(3.5,3.5,"31")
pcf<-sim.data(N=10,type="1d2modal") lst<-leafsfirst(pcf) lift<-0.02 numet<-c("A","B","C","D","E","F","G","H","I","J") split1<-median(pcf$value) ala<-(pcf$value=median(pcf$value)) split3<-median(pcf$value[yla]) # frame 1 plot(x="",y="",xlim=c(0,length(pcf$value)),ylim=c(0,max(pcf$value)+lift), xlab="",ylab="",cex.axis=1.5) lev0=0 for (i in 1:length(pcf$value)){ x1<-i-1 x2<-i lev<-pcf$value[i] polygon(c(x1,x2,x2,x1),c(lev0,lev0,lev,lev)) #,col="black",lty="blank") text(i-1+0.5,pcf$value[i]+lift,numet[i],cex=1.5) } # frame 2 plot(x="",y="",xlim=c(-3.8,4.3),ylim=c(5.5,10), xlab="",ylab="",xaxt="n",yaxt="n") points(0,10,cex=2,pch=20) sii<-0.7 text(0-sii,10,0.10,cex=1.5) segments(0,10,-2,8) segments(0,10,2,8) points(-2,8,cex=2,pch=20) text(-2-sii,8,0.02,cex=1.5) text(-2+2*sii,8,labels=c("A,B,H,I,J"),cex=1.5) segments(-2,8,-3,6) segments(-2,8,-1,6) points(2,8,cex=2,pch=20) text(2-sii,8,0.18,cex=1.5) text(2+2*sii,8,labels=c("C,D,E,F,G"),cex=1.5) segments(2,8,1,6) segments(2,8,3,6) siii<-0.3 points(-3,6,cex=2,pch=20) text(-3,6-siii,labels=c("A,J"),cex=1.5) points(-1,6,cex=2,pch=20) text(-1,6-siii,labels=c("B,H,I"),cex=1.5) points(1,6,cex=2,pch=20) text(1,6-siii,labels=c("D,G"),cex=1.5) points(3,6,cex=2,pch=20) text(3,6-siii,labels=c("C,E,F"),cex=1.5)
pcf<-sim.data(N=10,type="1d2modal") lst<-leafsfirst(pcf) lift<-0.02 numet<-c("1","2","3","4","5","6","7","8","9","10") or<-order(pcf$value) jur<-or for (i in 1:length(or)) jur[or[i]]<-length(or)-i+1 # frame 1 plot(x="",y="",xlim=c(0,length(pcf$value)),ylim=c(0,max(pcf$value)+lift), xlab="",ylab="") lev0=0 for (i in 1:length(pcf$value)){ x1<-i-1 x2<-i lev<-pcf$value[i] polygon(c(x1,x2,x2,x1),c(lev0,lev0,lev,lev)) text(i-1+0.5,pcf$value[i]+lift,numet[jur[i]]) } # frame 2 info<-numet[length(numet):1] plottree(lst,info=info,modelabel=FALSE,infopos=-0.6,xmarginright=0.02)
N<-c(16,16) et<-sim.data(N=N,type="mulmod") et$index<-NULL tt<-leafsfirst(et) # frame 1 pn<-80 dm<-draw.pcf(et,pnum=c(pn,pn)) contour(dm$x,dm$y,dm$z) # frame 2 pn<-40 dm<-draw.pcf(et,pnum=c(pn,pn)) persp(dm$x,dm$y,dm$z,theta=-50,phi=25, xlab="",ylab="",zlab="",ticktype="detailed") # frame 3 plotvolu(tt,ptext=0.002) # frame 4 leafsfirst.visu(tt,et,lkmbound=28) # frame 5 leafsfirst.visu(tt,et,lkmbound=57) # frame 6 leafsfirst.visu(tt,et,lkmbound=59)
N<-c(16,16) pcf<-sim.data(N=N,type="fox") st<-leafsfirst(pcf,propor=0.1) # frame 1 leafsfirst.visu(st,pcf,lkmbound=38,propor=0.1) # frame 2 leafsfirst.visu(st,pcf,lkmbound=65,propor=0.1) # frame 3 leafsfirst.visu(st,pcf,lkmbound=70,propor=0.1)
plotnet<-function(){ plot("","",xlim=c(0,4),ylim=c(0,4),xlab="",ylab="",#axes=FALSE, pch=21,cex=3) xgrid0<-c(0,2,4) ygrid0<-c(0,0,0) xgrid1<-c(0,2,4) ygrid1<-c(4,4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0,0) ygrid0<-c(0,4) xgrid1<-c(4,4) ygrid1<-c(0,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(1,3) ygrid0<-c(0,0) xgrid1<-c(1,3) ygrid1<-c(4,4) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0) ygrid0<-c(2) xgrid1<-c(4) ygrid1<-c(2) segments(xgrid0,ygrid0,xgrid1,ygrid1) xgrid0<-c(0,0) ygrid0<-c(1,3) xgrid1<-c(4,4) ygrid1<-c(1,3) segments(xgrid0,ygrid0,xgrid1,ygrid1) text(0.5,0.5,"16") text(1.5,0.5,"20") text(2.5,0.5,"24") text(3.5,0.5,"28") text(0.5,1.5,"17") text(1.5,1.5,"21") text(2.5,1.5,"25") text(3.5,1.5,"29") text(0.5,2.5,"18") text(0.5,3.5,"19") text(2.5,3.5,"27") text(3.5,3.5,"31") } # frame 1 plotnet() for (i in 0:3){ x0<-i+0.1 y0<-0.1 x1<-i+0.1 y1<-1.9 segments(x0,y0,x1,y1) } for (i in 0:3){ x0<-i+0.9 y0<-0.1 x1<-i+0.9 y1<-1.9 segments(x0,y0,x1,y1) } for (i in 0:3){ x0<-i+0.1 y0<-0.1 x1<-i+0.9 y1<-0.1 segments(x0,y0,x1,y1) } for (i in 0:3){ x0<-i+0.1 y0<-1.9 x1<-i+0.9 y1<-1.9 segments(x0,y0,x1,y1) } x<-c(0.1,0.1,0.9,0.9,0.1) y<-c(2.1,3.9,3.9,2.1,2.1) lines(x,y) xs<-c(2.1,2.1,2.9,2.9,2.1) ys<-c(3.1,3.9,3.9,3.1,3.1) lines(xs,ys) xu<-xs+1 y<-c(3.1,3.9,3.9,3.1,3.1) lines(xu,y) # frame 2 plotnet() x<-c(0.1,0.1,0.9,0.9,0.1) y<-c(0.1,3.9,3.9,0.1,0.1) lines(x,y) x<-c(1.1,1.1,1.9,1.9,1.1) y<-c(0.1,1.9,1.9,0.1,0.1) lines(x,y) lines(x+1,y) lines(x+2,y) xs<-c(2.1,2.1,2.9,2.9,2.1) ys<-c(3.1,3.9,3.9,3.1,3.1) lines(xs,ys) lines(xs+1,ys) # frame 3 plotnet() x<-c(0.1,0.1,0.9,0.9,1.9,1.9,0.1) y<-c(0.1,3.9,3.9,1.9,1.9,0.1,0.1) lines(x,y) x<-c(2.1,2.1,3.9,3.9,2.1) y<-c(0.1,1.9,1.9,0.1,0.1) lines(x,y) x<-c(2.1,2.1,3.9,3.9,2.1) y<-c(3.1,3.9,3.9,3.1,3.1) lines(x,y) # frame 4 plotnet() x<-c(0.1,0.1,0.9,0.9,3.9,3.9,0.1) y<-c(0.1,3.9,3.9,1.9,1.9,0.1,0.1) lines(x,y) x<-c(2.1,2.1,3.9,3.9,2.1) y<-c(3.1,3.9,3.9,3.1,3.1) lines(x,y)