当年我准备考博的时候,健康院某PI(本来的意向导师)找我帮他在iMac上安装盗版的Papers(文献管理器)和Illustrator(PS的兄弟),安装后,跟我说:“我们做科研的,最重要的软件就是Papers和Illustrator。”,当然后来感觉挺坑我,就放弃了。

这么多年过去了,至今这两个软件我都没用过!我画图,追求的是全部由代码产生,至今还没有修图的需求,也就没有试过Illustrator了。

Illustrator必须有些门槛,而且关键是Adobe绑死在PDF上,实际上如果80%的问题都可以用PowerPoint解决,剩下那20%,反正也不常用。而PowerPoint的优点是没有门槛,傻瓜式操作,像我这种怀疑自己智商的人,都会用啊!

要是R画的图,能够在PowerPoint里面编辑就好了!

要是R画的图,能够在PowerPoint里面编辑就好了!

要是R画的图,能够在PowerPoint里面编辑就好了!

Continue reading

biobabble作者群有一个小伙伴提出来的问题。

没错,凡是给biobabble投稿的小伙伴都会被拉入作者群。

话说有一个矩阵,我们让它某个值缺失,算出来的距离和原来的竟然是一样的:

> dat = matrix(1:10, 2)
> dist(dat)
         1
2 2.236068
> dat[1,1] = NA
> dist(dat)
         1
2 2.236068

这有点反直觉,实际上你再搞个缺失值,它算出来还是一样的:

> dat[1,3] = NA
> dist(dat)
         1
2 2.236068

但以我的经验,我通常不敢轻易说人家有bug,我们得确认一下。

Continue reading

在《一图告诉你venn plot和upset plot的关系》一文中,我们应该很清楚这两者的关系,upset plot是更清晰的呈现方式,而且能够支持无数多个分类,在《转UpSet图为ggplot?》一文中,又介绍了一个转化UpSetR输出为ggplot2便于嵌图和拼图的方法,但这个需要一个补丁,然后我提交的这个补丁,一直没有被作者接收。而且毕竟UpSetR是用grid写的,像grid这种高级货,玩起来还是有点难度,我一直在想应该有一个ggplot2版本的upset plot,最近就让我在gayhub上发现了。

这包已经在CRAN上,所以可以用最简单的方式安装:

install.packages("ggupset")
library(tidyverse)
library(ggupset)

tidy_movies %>%
  distinct(title, year, length, .keep_all=TRUE) %>%
  ggplot(aes(x=Genres)) +
    geom_bar() +
    scale_x_upset(n_intersections = 20)

Continue reading

你是否对《R包辣鸡之CorMut》之篇还有印象?没有的话,快点打开阅读一下,这文章让作者毕业了,毕竟发表的是一篇Bioinformatics。

[连载3]:辣眼睛,一篇抄袭引发的系列血案!》,而这一篇文章中揭露了某讲师抄袭了两个R包,晋升副教授了!文章中还稍带了另外一个学生也是抄袭,当然也发表了SCI,也毕业了。

今天讲另外一个R包,它做下面的事情:

当然前面的事情是goseq干的,它的功能就是衔接了goseq的输出,让我们还看看它每一步都在做什么。

Continue reading

在《一个更好用的pheatmap》一文中介绍了pheatmap的新功能,它输出为一个pheatmap的对象,这个对象在终端上打出来,会出来图,你可以用ggplot2::ggsave()来保存图片,文章的结尾处卖了一个关子,就是用cowplot来拼,这个有许多人问过我,因为大家一般都认为cowplot只能用于ggplot2的输出,pheatmap感觉好像不太行,而且在很多人的感觉中,画图代码不是ggplot2写的,就是base写的,而pheatmap看上去就像是base一般,其实它是grid写的,我在下面两篇文章中都有示例代码,用于拼pheatmap,不过一般人看过了,也只是留下一点印象,终究还是记不住,因为涉及到grid的知识。

现在我们有一种你一定能记得住的方法了,以后再也不用问pheatmap怎么拼图了,首先pheatmap产生的是一个对象,然后这个对象我们可以用ggplot2给画出来,然后自然而然你能够用cowplot去拼,再熟悉不过了,如果这都不能理解记住,那我也没办法了。

Continue reading

library(ggplot2)

pups <- nlme::RatPupWeight %>% 
    janitor::clean_names() %>%
    dplyr::mutate(litter = as.integer(litter))

p <- ggplot(pups, aes(x = litter, y = weight, color = treatment))

针对某一个x值,我们可以画出相应y的统计量,比如均值、方差等,这些都可以“手工”的方式通过图层叠加来实现。

p + geom_jitter(shape=1) + 
    stat_summary(fun.y = "mean", size=2, geom="point", color = 'black') + 
    stat_summary(fun.data = mean_cl_normal, geom="errorbar", width=.1, color='black')

Continue reading

怎么提问,是需要学习的

我写过不少文章,都有提及提问的礼仪,会提问的人,比较容易得到帮助,而不会提问的人,理你才怪,比如说明明出错信息很明显,还给了你解决的提示而你却不看。举个例子现在需要编译的R包,如果缺少库文件,报错的话,一般会提示你Debian/Ubuntu系列apt安装什么包,Redhat系列yum安装什么,MacOS的话,brew安装什么,你按照提示装上再说,你不懂的话,你还不会把出错信息贴出来google一下吗?一般都有人解决了。 一个错误的示范

Continue reading

Author's picture

Guangchuang Yu

Bioinformatics Professor @ SMU

Bioinformatics Professor

Guangzhou