A user comment asks the following:
"I wonder how can I alter the size of the "pie" in describe.simmap.... Same question for altering the color...."
Well, there is no way at present to change the color or pie-size in describe.simmap(...,plot=TRUE); however, describe.simmap, it is easy to recreate the posterior probability plot of describe.simmap using the function output - while customizing its attributes.
Here's a quick demo:
> # check package version
> packageVersion("phytools")
[1] ‘0.2.54’
>
> # first simulate some data to use in the demo
> Q<-matrix(c(-2,1,1,1,-2,1,1,1,-2),3,3)
> rownames(Q)<-colnames(Q)<-letters[1:3]
> tree<-sim.history(pbtree(n=50,scale=1),Q)
> x<-tree$states
>
> # now the demo
> mtrees<-make.simmap(tree,x,model="ER",nsim=100)
make.simmap is sampling character histories conditioned on the transition matrix
Q =
a b c
a -2.041867 1.020934 1.020934
b 1.020934 -2.041867 1.020934
c 1.020934 1.020934 -2.041867
(estimated using likelihood);
and (mean) root node prior probabilities
pi =
a b c
0.3333333 0.3333333 0.3333333
Done.
> XX<-describe.simmap(mtrees,plot=FALSE)
100 trees with a mapped discrete character with states:
a, b, c
trees have 23.93 changes between states on average
changes are of the following types:
a,b a,c b,a b,c c,a c,b
x->y 2.11 2.91 4.62 5.77 4.94 3.58
mean total time spent in each state is:
a b c total
raw 2.2816521 4.1930936 4.2593925 10.73414
prop 0.2125603 0.3906316 0.3968081 1.00000
> hh<-max(nodeHeights(tree))*0.02 # for label offset
> plot(tree,no.margin=TRUE,label.offset=hh,edge.width=2)
> nodelabels(pie=XX$ace,piecol=c("blue","red","green"), cex=0.5)
> tiplabels(pie=to.matrix(x,colnames(XX$ace)), piecol=c("blue","red","green"),cex=0.5)
> packageVersion("phytools")
[1] ‘0.2.54’
>
> # first simulate some data to use in the demo
> Q<-matrix(c(-2,1,1,1,-2,1,1,1,-2),3,3)
> rownames(Q)<-colnames(Q)<-letters[1:3]
> tree<-sim.history(pbtree(n=50,scale=1),Q)
> x<-tree$states
>
> # now the demo
> mtrees<-make.simmap(tree,x,model="ER",nsim=100)
make.simmap is sampling character histories conditioned on the transition matrix
Q =
a b c
a -2.041867 1.020934 1.020934
b 1.020934 -2.041867 1.020934
c 1.020934 1.020934 -2.041867
(estimated using likelihood);
and (mean) root node prior probabilities
pi =
a b c
0.3333333 0.3333333 0.3333333
Done.
> XX<-describe.simmap(mtrees,plot=FALSE)
100 trees with a mapped discrete character with states:
a, b, c
trees have 23.93 changes between states on average
changes are of the following types:
a,b a,c b,a b,c c,a c,b
x->y 2.11 2.91 4.62 5.77 4.94 3.58
mean total time spent in each state is:
a b c total
raw 2.2816521 4.1930936 4.2593925 10.73414
prop 0.2125603 0.3906316 0.3968081 1.00000
> hh<-max(nodeHeights(tree))*0.02 # for label offset
> plot(tree,no.margin=TRUE,label.offset=hh,edge.width=2)
> nodelabels(pie=XX$ace,piecol=c("blue","red","green"), cex=0.5)
> tiplabels(pie=to.matrix(x,colnames(XX$ace)), piecol=c("blue","red","green"),cex=0.5)
Obviously, to adjust the pie-sizes & colors we just change the values of cex & piecol.
That's it.
Great post! Very useful for plus-100-tips trees.
ReplyDeleteHi, I have problems with executing describe.simmap function.
ReplyDeleteI have an object with phylogenetic trees with mapped discrete characters, but I have a problem like this:
> simPP
500 phylogenetic trees with mapped discrete characters
>describe.simmap(simPP)
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) :
'x' must be atomic
Can you help me please?
Thank you,
Can you report your package version number & how the stochastic mapped trees were obtained (i.e., did they read from file or were they generated by make.simmap)?
DeleteThanks.
This comment has been removed by the author.
ReplyDelete