Nothing
### DEMONSTRATION FOR PLOTMAT
## plots diagram based on a matrix
## SIMPLE PLOTMAT example
par(ask=TRUE)
par(mar=c(1,1,1,1),mfrow=c(2,2))
names <- c("A","B","C","D")
M <- matrix(nrow=4,ncol=4,byrow=TRUE,data=0)
pp<-plotmat(M,pos=c(1,2,1),name=names,lwd=1,box.lwd=2,cex.txt=0.8,
box.size=0.1,box.type="square",box.prop=0.5)
M[2,1]<-M[3,1]<-M[4,2]<-M[4,3] <- "flow"
pp<-plotmat(M,pos=c(1,2,1),curve=0,name=names,lwd=1,box.lwd=2,cex.txt=0.8,
box.type="circle",box.prop=1.0)
diag(M) <- "self"
pp<-plotmat(M,pos=c(2,2),curve=0,name=names,lwd=1,box.lwd=2,cex.txt=0.8,
self.cex=0.5,self.shiftx=c(-0.1,0.1,-0.1,0.1),
box.type="diamond",box.prop=0.5)
M <- matrix(nrow=4,ncol=4,data=0)
M[2,1]<-1 ;M[4,2]<-2;M[3,4]<-3;M[1,3]<-4
pp<-plotmat(M,pos=c(1,2,1),curve=0.2,name=names,lwd=1,box.lwd=2,cex.txt=0.8,
arr.type="triangle",box.size=0.1,box.type="hexa",box.prop=0.5)
mtext(outer=TRUE,side=3,line=-1.5,cex=1.5,"plotmat")
##PLOTMAT example 2
names <- c("A","B","C","D")
M <- matrix(nrow=4,ncol=4,byrow=TRUE,data=0)
M[2,1]<-M[3,2]<-M[4,3]<-1
par(mfrow=c(1,2))
pp<-plotmat(M,pos=c(1,1,1,1),curve=0,name=names,lwd=1,box.lwd=2,cex.txt=0.,
box.size=0.2,box.type="square",box.prop=0.5,arr.type="triangle",
arr.pos=0.6)
p2 <-plotmat(M[1:2,1:2],pos=pp$comp[c(1,4),],curve=0,name=names[c(1,4)],lwd=1,box.lwd=2,
cex.txt=0.,box.size=0.2,box.type="square",box.prop=0.5,
arr.type="triangle",arr.pos=0.6)
text(p2$arr$ArrowX+0.1,p2$arr$ArrowY,font=3,adj=0,"one flow")
par(mfrow=c(1,1))
mtext(outer=TRUE,side=3,line=-1.5,cex=1.5,"plotmat")
# Plotmat example NPZZDD model
names <- c("PHYTO","NH3","ZOO","DETRITUS","BotDET","FISH")
M <- matrix(nrow=6,ncol=6,byrow=TRUE,data=c(
# p n z d b f
0,1,0, 0, 0, 0, #p
0,0,4, 10,11,0, #n
2,0,0, 0, 0, 0, #z
8,0,13,0, 0, 12,#d
9,0,0, 7, 0, 0, #b
0,0,5, 0, 0, 0 #f
))
pp<-plotmat(M,pos=c(1,2,1,2),curve=0,name=names,lwd=1,box.lwd=2,cex.txt=0.8,
box.type="square",box.prop=0.5,arr.type="triangle",
arr.pos=0.4,shadow.size=0.01,prefix="f",
main="NPZZDD model, from Soetaert and herman, 2009, Springer")
# extra arrows: flow 5 to Detritus and flow 2 to detritus
phyto <-pp$comp[names=="PHYTO"]
zoo <-pp$comp[names=="ZOO"]
nh3 <-pp$comp[names=="NH3"]
detritus<-pp$comp[names=="DETRITUS"]
fish <-pp$comp[names=="FISH"]
# flow5->detritus
m2 <- 0.5*(zoo+fish)
m1 <- detritus
m1[1]<-m1[1]+ pp$radii[4,1]
mid<-straightarrow (to=m1,from=m2,arr.type="triangle",arr.pos=0.4,lwd=1)
text(mid[1],mid[2]+0.03,"f6",cex=0.8)
# flow2->detritus
m2 <- 0.5*(zoo+phyto)
m1 <- detritus
m1[1] <-m1[1]+ pp$radii[3,1]*0.2
m1[2]<-m1[2] + pp$radii[3,2]
mid<-straightarrow (to=m1,from=m2,arr.type="triangle",arr.pos=0.3,lwd=1)
text(mid[1]-0.01,mid[2]+0.03,"f3",cex=0.8)
# TRANSITION MATRIX
par(mfrow=c(2,1))
#labels as formulae
Numgenerations <- 6
# Original Population matrix
DiffMat <- matrix(data=0,nrow=Numgenerations,ncol=Numgenerations) # declare it
AA <- as.data.frame(DiffMat)
AA[[1,4]]<- "f[3]"
AA[[1,5]]<- "f[4]"
AA[[1,6]]<- "f[5]"
AA[[2,1]]<- "s[list(0,1)]"
AA[[3,2]]<- "s[list(1,2)]"
AA[[4,3]]<- "s[list(2,3)]"
AA[[5,4]]<- "s[list(3,4)]"
AA[[6,5]]<- "s[list(4,5)]"
name <- c("Age0","Age1","Age2","Age3","Age4","Age5")
PP <- plotmat(A=AA,pos=6,curve=0.7,name=name,lwd=2,arr.len=0.6,arr.width=0.25,my=-0.2,
box.size=0.05,arr.type="triangle",dtext= 0.95,cex.txt=0,
main="Age-structured population model 1")
for (i in 1:nrow(PP$arr))
text(as.double(PP$arr[i,"TextX"]),as.double(PP$arr[i,"TextY"]),
parse(text=as.character(PP$arr[i,"Value"])))
# reduced population matrix
Numgenerations <- Numgenerations-1
DiffMat <- DiffMat[-1,-1]
AA <- as.data.frame(DiffMat)
AA[[1,3]]<- "f[3]*s[list(0,1)]"
AA[[1,4]]<- "f[4]*s[list(0,1)]"
AA[[1,5]]<- "f[5]*s[list(0,1)]"
AA[[2,1]]<- "s[list(0,2)]"
AA[[3,2]]<- "s[list(2,3)]"
AA[[4,3]]<- "s[list(3,4)]"
AA[[5,4]]<- "s[list(4,5)]"
name <- c("Age0","Age2","Age3","Age4","Age5")
pos <- PP$comp[-1,]
PP <- plotmat(AA,pos=pos,curve=0.7,name=name,lwd=2,arr.len=0.6,arr.width=0.25,my=-0.1,
box.size=0.05,arr.type="triangle",dtext= 0.95,cex.txt=0,main="Age-structured population model 2")
for (i in 1:nrow(PP$arr))
text(as.double(PP$arr[i,"TextX"]),as.double(PP$arr[i,"TextY"]),
parse(text=as.character(PP$arr[i,"Value"])))
par(mfrow=c(1,1),mar=c(2,2,2,2))
#################3
par(mfrow=c(1,1))
par(mar=c(4,4,4,4))
par(xaxs="r",yaxs="r")
# Fecundity and Survival for each generation
NumClass <- 10
Fecundity <- c(0, 0.00102,0.08515,0.30574,0.40002,
0.28061,0.1526 ,0.0642 ,0.01483,0.00089)
Survival <- c(0.9967 ,0.99837,0.9978 ,0.99672,0.99607,
0.99472,0.99240,0.98867,0.98274,NA) # survival from i to i+1
cbind(Fecundity,Survival)
# Population matrix M
DiffMatrix <- matrix(data=0,nrow=NumClass,ncol=NumClass) # declare it
DiffMatrix[1,] <- Fecundity # first row: fecundity
for (i in 1:(NumClass-1)) DiffMatrix[i+1,i] <- Survival[i]
DiffMatrix # print the matrix to screen
names <- c("0-5yr","5-10yr","10-15yr","15-20yr","20-25yr","25-30yr","30-35yr","35-40yr","40-45yr","45-50yr")
# first generation will be positioned in middle; other generations on a circle
pos <- coordinates(NULL,N=NumClass-1)
pos <- rbind(c(0.5,0.5),pos)
curves <- DiffMatrix
curves[] <- -0.4
curves[1, ] <- 0
curves[2,1] <- -0.125
curves[1,2] <- -0.125
plotmat(main="US population, life cycle, 1966",DiffMatrix,pos=pos,name=names,curve=curves,lcol="darkblue",arr.col="lightblue",
box.size=0.07,arr.type="triangle",cex.txt=0.8,box.col="lightyellow",box.prop =1)
#####
A <- matrix(nrow=7,ncol=7,NA)
A[,1] <- 1 ; A[1,1]<-0
pos <- coordinates(NULL,N=6,relsize=0.8) # 6 boxes in circle
pos <- rbind(c(0.5,0.5),pos) # one in middle
plotmat(A,pos=pos,lwd=1,curve=0,box.lwd=2,cex.txt=0.8,box.col=2:8,
box.cex=0.8,box.size=0.125,arr.length=0.5,box.type=c("multi","rect","ellipse"),
shadow.size = 0.01,nr=5,main="plotmat")
# TRANSITION MATRIX EXAMPLE
# dataset Teasel
curves <- matrix(nrow=ncol(Teasel),ncol=ncol(Teasel),0)
curves[3,1]<- curves[1,6]<- -0.35
curves[4,6]<-curves[6,4]<-curves[5,6]<-curves[6,5]<-0.08
curves[3,6]<- 0.35
plotmat(Teasel,pos=c(3,2,1),curve=curves,name=colnames(Teasel),lwd=1,box.lwd=2,cex.txt=0.8,
box.cex=0.8,box.size=0.08,arr.length=0.5,box.type="circle",box.prop=1,
shadow.size = 0.01,self.cex=0.6,my=-0.075, mx=-0.01,relsize=0.9,
self.shiftx=c(0,0,0.125,-0.12,0.125,0),self.shifty=0,main="Teasel population model")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.