大家是否还记得我写的文章《画个小圈圈》?里面吐槽了ggpubr这个包的存在是制造混乱,徒增学习成本。我们知道ggplot2包里有个qplot函数,而在《ggplot2》的第一版中,hadley先用了一章介绍qplot,再介绍grammar of graphics,然后这个qplot就被吐槽,先入为主,给学习grammar of graphics,学习ggplot2语法制造了不必要的麻烦。然后如果你看《ggplot2》第二版,你就会发现qplot这一章被删掉了。我说ggpubr制造混乱,徒增学习成本并不是为了吐槽某公众号,而是实事求是。

我并不反对封装,我并没有强迫症说大家一定要用ggplot2图形语法,而不能封装函数,我想我在《画个小圈圈》已经说得很清楚了,封装画图的包,按我的观点是要么卖了数据处理的专业知识,要么卖了画图的专业知识。如果一个包做的封装太过于简单,像ggpubr这种,数据必须是用户整理好的data.frame,而画图只是简单的两三个图层的叠加,那么当然可以减少你敲键盘输入,然而影响了初级用户学习ggplot2,复杂的东西,我们当然想要用封装好的函数,等你自己啥都搞懂了,老板都要跟你掀桌子了。简单的东西也可以封装,减少输入嘛,只是特别不适用于ggplot2的图层,简单的设定你写个主题,我都举双手赞成,但两三个图层的简单拼凑我不支持,因为图层是积木,大家学习就是要对积木熟悉,然后才能搭出复杂的东西出来。特别简单的图层叠加正是你熟悉积木的时候,你不多敲点键盘,做为练习,又怎么能做出稍复杂点的东西呢?

Continue reading

很多人都在学ggplot2,也有很多「高手」,比如你搜索「精通ggplot2」,你甚至会看到各种「从入门到精通」的课程,然而都是各种照猫画老虎的入门菜谱而已,当然广大群众去上课也可能只是为了求菜谱好在需要的时候,可以copy-paste而已。

ggplot2学习容易,因为无非是图层叠加,而图层的参数一致性非常好,网上也有很全的文档。然而要深入很难,比如你想干点什么是ggplot2自身没有支持的,你需要自己去hack,需要用到更底层的东西的时候,一般情况下,会无从入手,尝试之后才知道什么叫绝望!因为ggplot2套路实在是太深。

正如我在《听说你还不会画热图》吐槽的,有些所谓的「高手」实际上连ggplot2底层是什么都不知道!然后可以把ggplot2吹上天。很多人根本不知道当你打下ggplot这个命令的时候,到底发生了什么?要理解ggplot2并不容易,正如前面所说「套路太深」,没有金钢钻,读不了它的代码,有没有一个简单点的包,能够读懂代码,并且有助于理解ggplot2呢?我想我的meme包就非常好,虽然仿的有点肤浅,然而胜在简单,看过下面这两篇文章的,都知道这个包在做什么。

Continue reading

I am trying to add a scale to an unrooted tree with geom_treescale, but when I use it, the tree completely collapses and I am not able to set anything that fix it. Anybody has any idea on how to do it ?

google group里的问题,说他加geom_treescale之后,树被压缩了,由于他没有给出可重复性的例子,所以我们并不知道情况到底有多么糟糕,但这种情况是可能发生的,因为加treescale这种东西,默认情况下geom_treescale会自己去计算该加多大的scale bar,该放在什么位置上,而这种默认情况是基于rectangular布局来的,在假设的情况下,都不可能尽善尽美,假设不成立的情况下当然有可能搞得很差。

Continue reading

有小伙伴在说可以用par(mar)来设置画图的margin,但不能应用于ggplot2,这个可能很多新手都会很困扰,可能需要一段时间的探索之后,才能发现原来是用theme来设定。

这当然你可以归结于说ggplot2和base plot是不同的东西,但从实质画图参数这一点而言,并没有什么同与不同,无非是设置的方式不同而已,而这种方式都是人定义的,我们完全可以人为定义它们兼容。

Continue reading

想当年还在读本科那会,debian还是比较阳春的东西,然后就被ubuntu给普及了,ubuntu我实际上是不喜欢的,如果有linux的问题,搜出来是ubuntu的链接,我基本不会点开,ubuntu用的人实在太多,而且是特别多的小白,真正好的发行版是gentoo和arch,文档齐全,小白少。我目前使用的就是arch,因为gentoo实在是笔记本吃不消天天在编译。

Continue reading

Hello all,

When I plot some data using ggtree, the out groups are on a very long branch length. The out groups are 75 and 76 in the example below.

I would like to keep the out groups in the tree but ignore their branch lengths to make presentation easier.

Continue reading

像这样的通路图,基本上都是手工画的,也有几个软件可以做这事,但都不流行,毕竟也没啥,无非是素材,所以多半还是素材+熟悉的软件,比如有illustrator、fireworks以及最受欢迎的powerpoint。像illustrator很多人已经很熟,或者powerpoint绝对够傻瓜操作,我们需要的只是素材,自制素材也是可以的,但费时且有时候还不够好看。很多人还在费力收集网上可以下载到的各种素材,很多素材覆盖面不够广,而不同来源的素材混搭有时候会有种画风不对的感觉。

Continue reading

Author's picture

Guangchuang Yu

Bioinformatics Professor @ SMU

Bioinformatics Professor

Guangzhou