小伙伴提出了上面的问题,点不能够打到violin里面去,即使加了aes(group=color)强行分组也不行。这个照理第一感觉都会觉得可以,但试一下都会发现不行。

library(ggplot2)
d = subset(diamonds, color %in% c("D", "E"))
ggplot(d, aes(cut, carat, fill=color, color=color)) + 
    geom_violin(alpha=.3) + geom_jitter(width=.05, alpha=.5)

Continue reading

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

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

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

Continue reading

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

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

Continue reading

一千个伤心的理由

眼看着2月14号就要到来了,又是一年一度的画红心装13的时候,这种事情已经被我BS了,请猛击:《画❤️装geek什么的,都弱爆了!😜》。红心已经没什么好画的了,特别是在我画了生日蛋糕,并用蛋糕画红心之后,《130岁了,祝你生快》,是驴子是马,都没法晒肌肉了。当然红心还是会有所谓的理工宅男晒,除此之外还会有各种花招,来给单身狗撒狗粮。想要加入撒狗粮大军的,快点看《如何告别单身》。

Continue reading

ggplot2的一个坑

今天以ggplot2的一个坑来说一下,坑无处不在,防不胜防,你大可以试一下下面的代码:

> set.seed(123)
> require(ggplot2)
Loading required package: ggplot2
> rnorm(3)
[1]  0.8005543  1.1902066 -1.6895557
> set.seed(123)
> rnorm(3)
[1] -0.5604756 -0.2301775  1.5587083

在两次set.seed和rnorm之间,第一次因为加载了ggplot2,结果就不一样了!这必须是第二次是正确答案,也就是说加载ggplot2把你的seed给吃了!加载包会改变R环境?这绝对不是好主意,我们来试试加载别的包试试,比如我的clusterProfiler:

Continue reading

画一只恐龙

大家是否还记得我的《webinar录播 (2017-10-24):plotting tree + data》,这可以说是R画图最好的课程,PPT也分享给大家《ggtree直播PPT第一部分》和《ggtree直播PPT第二部分》。

我在PPT中,用了meme,发现没有R包可以做,于是我写了一个R包来做这个事情。

后来又写一个R包来实现字体的阴影效果:

Continue reading

画个小圈圈

之前我发表读书笔记《主成分分析

这可能是你见过最好看的PCA图了,有人在「宏基因组」群里问有没有什么包可以画?像这种提问,我以前是吐槽过的,请猛击《如何画类似MEME的注释序列》,当然说什么都没用,大家就是喜欢凡事问有包吗?因为包治百病嘛,不信你送个包给你女票试试!

jimmy回答说ggbiplot可以画差不多的,于是「宏基因组」公众号立刻就出来一篇《ggbiplot-最好看的PCA作图:样品PCA散点+分组椭圆+变量贡献与相关》,后面又有人提问,能不能加两个置信区间?@Chenhao童鞋就给出了解决方案,并且写了篇博客文介绍.

他的作图是基于ggord包,只能应用于LDA,于是「宏基因组」公众号又跟进发一篇《比PCA更好用的监督排序—LDA分析、作图及添加置信-ggord》,你会发现他们介绍同一类型的作图,一会这个包,一会那个包,一会某包有A功能,某包又有B功能,我就不说什么了。

Continue reading

Author's picture

Guangchuang Yu

Bioinformatics Professor @ SMU

Bioinformatics Professor

Guangzhou