想要分段标记bootstrap,比如0-70, 70-90, 90-100之类的。这个对于ggtree来说,太简单。

首先我们要读树,用treeioread.newick,它和read.tree的不同之处是,加入了参数node.label,当node.label存的不是label,而是bootstrap等数字型的时候,你可以传入node.label='support',这样它会把node label解析为support value,另存为树注释数据,而不是和tip label混在一起。label变量只能存为字符型,因为和tip label混了,而字符型会让数字操作稍微复杂点。所以我们要用read.newick

tree <- read.newick("RMI.phy_phyml_tree_rooted_labeled.txt", node.label='support')
root <- getRoot(tree@phylo)

p <- ggtree(tree, color="black", size=1.5, linetype=1,  ladderize=TRUE) + 
     ggtitle(label="Figure A") + 
    geom_tiplab(size=4.5, hjust = -0.060, fontface="bold") +  xlim(0, 0.09)

Continue reading

最新的一个问题,大致讲他有两个trait, A和B,想拿A来给label上色,B来画热图。

加载用户数据我们有%<+%操作符,热图有gheatmap函数。

我给了他一个简单的例子:

Continue reading

比如下面的代码:

require(ggplot2)
d <- data.frame(x=c(0, 0.002, 0.00575), y = 1:3)
p <- ggplot(d, aes(x, y)) + geom_point() + xlab(NULL) + ylab(NULL)
print(p)

上面图中x轴的文本0.006,这个数字中的6几乎看不到,因为一半过界了。

Continue reading

ggtree发表

MEE在18号出版了今年(第8卷)第1期,ggtree正好在这一期出版,一经出版就有几条推在传播, 我也是在推特上看到,才发现,哦原来我的文章出版了。然后我又发现2017年新鲜出炉有了一篇PNAS的引用。

我以前没接触过进化,来了现在这个实验室,发现可视化是个大问题,大家都在用AI,慢慢地抠,对于一些和进化树相关的数据,自己一点一点地在AI里面加上去。甚至于genotype table是一个框一个框地在AI里面加的。一方面画一顆树可能用掉你几天的时间,另一方面,太容易出错了,再者你花的时间并不能转化为生产力,每一次你都要这么搞!这简直就是水深火热啊!

我也帮师兄写过一些代码,给定进化树上节点的序列,我比较父节点和子节点,把碱基或氨基酸替换写到newick树的node label,然后就可以用软件展示序列的替换情况。教会了师兄,他再去给他的师弟师妹们演示,说以后咱们可以这么干了,一个个觉得很牛逼,我内心想的是,愚蠢的人类啊,node label只能存一个信息,牛逼的方式应该是可以展示多个维度的信息,通过图层自由组合。这个时候我就产生了要写ggtree的想法。

Continue reading

这个Diego在推特上问的问题,他最近在写一个motiftools的R包,里面用了ggtree来画图,我想他应该是要解决他在包里的画树/聚类功能吧。

他问题写的horizontal,但其实plot.hclust默认是vertical,ggtree默认也是horizontal,所以我认为他问的是vertical layout,这个在我的回答中也得到了他的确认。

Continue reading

这是最近github上的问题,如何反转time scale,也就是把最近的时间设为0。而内部节点为距今多少年,这个很容易,把x轴的值变成x-max(x)就可以,感觉这个也只会在时间树上使用,所以取名revts(reverse time scale),revts之后,x轴最大值是0,其它为负数,可以使用scale_x_continuous改label为绝对值。

Continue reading

Author's picture

Guangchuang Yu

a senior-in-age-but-not-senior-in-knowledge bioinformatician

Postdoc researcher

Hong Kong