今天是大年初二,这篇文章我只想传达一点:
第一部分首先用两分钟的时间简单介绍一下R语言: 因为这个语言是肉丝儿(Ross Ihaka)和萝卜特(Robert Gentleman)两个人1992年在S语言的基础上发明出来的开源语言,所以叫做R语言。这两个人是统计学教授出身,所以R语言在统计学方面有着纯正的血统!如果你平时的工作和统计相关,你好意思不会点R语言么? 另外,在R语言的官网上,有这样一句话
看明白了么盆友! 画图,画各种各样的图,画各种各样高逼格的图,画各种各样高逼格可以出版的图,是R语言自带的另一个光芒属性。如果你正在为如何画出各种好看的可视化图而苦恼,难道你不应该学习一点R语言么? 对了,如果你以为R语言的创造者肉丝儿和萝卜特是一对情侣(这里真的没有鱼香什么事),那你错了,因为他俩长这样! 第二部分谈到画图,R语言里面有一个极其强大的工具,它是我们今天要谈论的主角:ggplot2 ggplot2 绘图作为R语言可视化阵营扛把子的地位是毋庸置疑的,我能与它结缘主要是因为自己本来没有正经地学过R语言,基础绘图里面多如繁星的参数调的我晕头转向。 正好看到一些公司的科研结题报告里面非常赞的图都是ggplot2出品的,就下定决心学一下。老规矩,先看点中文资料,接触最早是Y叔的ggplot系列,作为初学者入门指引绰绰有余了。把代码在R里面原样输出看看效果,把数据和代码和图形在脑海中形成连接,最后留在我心底的就只有映射这一核心思想。 我就明白我已经学会ggplot2的可视化了,虽然那时候的我画一个完整完美的图仍旧是各种磕磕碰碰,但并不影响我已经掌握了它的精髓。 两年多过去了,本身工作中需要我亲自来画图的机会非常少,所以我的可视化能力毫无进展,甚至有小幅度后退。最近在做直播我的基因组系列,完全是一个人要把一个团队的分析要点全部hold住,对我本身也是一个不小的考验。 前面的科研常规流程,包括下载各种公共数据,下载安装常见的软件,跑流程是我习以为常的事情。但作为自己的基因组,我的探索肯定不能像以往做科研项目那样浅尝辄止,马马虎虎的交差(希望老板不要看到)。我开始一步步地探索以前未接触的,懒得接触的,错过的细节知识点。而展现知识点给读者最重要的环节就是可视化。 今时不同往日,我木有手下,得亲自上阵。
大家由最近的直播我的基因组45—55讲应该可以看得出来,可视化方面我的确很弱,但我还是想分享一下自己是如何通过google来使用ggplot做可视化的!(如果你ggplot已经小成请略过后面的内容,新年快乐.jpg) 下面的每张图我都是通过搜索做出来的,因为此时的我ggplot2语法已经忘光了。(请务必亲自把我给出的关键词输入到google自己搜索一遍,我给出的链接复制到浏览器用心看一遍,不要以为就只有看个手机版的就能学会我的学习方法) 比如画X,Y变量(测序深度和GC含量)的散点图需要添加回归曲线,标记回归方程。 我在Google里面是这样搜索的:
http://www./Graphs/Scatterplots_(ggplot2)/ http:///questions/7549694/ggplot2-adding-regression-line-equation-and-r2-on-graph 然后我只看了这两个链接而已,就得到了自己想要的图! 比如画多个分组变量(SNV和INDEL的het,hom)的条形图,并且标记每个变量的数值,还有修改图例,重新排序! 【直播】我的基因组54:把我的variation跟dbSNP数据库相比较
http://www./Graphs/Legends_(ggplot2)/ http:///questions/14622421/how-to-change-legend-title-in-ggplot-density
http:///questions/6644997/showing-data-values-on-stacked-bar-chart-in-ggplot2 http:///questions/11653268/adding-labels-to-ggplot-bar-chart 再比如画人的22+X+Y染色体的测序深度的分布! 链接【直播】我的基因组51:画全基因范围内的染色体reads覆盖度图
http:///questions/14629607/long-vector-plot-coverage-plot-in-r https://www./p/18954/ 还有GO的分类富集分析结果图,或者火山图,或者其它:
https://cran./web/packages/GOplot/vignettes/GOplot_vignette.html https:///ftp/arxiv/papers/1602/1602.07103.pdf 基本上生物信息学所有常见的图在Google里面都可以找到现成的代码! 如果你跟我一样,只是想达到目的,那就Google好了。如果你需要创造新的可视化,彻底走向可视化这条路就有点麻烦了,你可能需要看大量的书籍,比如上面我们Google结果经常出现的《cookbook R》 和 《ggplot2 elegant graphics for data analysis》就是很优秀的。 不过,如果你们点进去看了我画的都是些什么东西,就明白,不要学我! 我只会修改别人的代码画图而已,如果你要彻底掌握可视化,请移步去Y叔的博客! GitHub 网址 http://guangchuangyu./ 或者关注他的公众号 第三部分这一部分是我和本文编辑学习ggplot2 的一小部分总结,如果你想看全部总结可以加生信菜鸟团QQ群下载 Word 版本。 什么,群号是啥?文末告诉你,先好好看文章。
R语言目前比较常用的有三大绘图系统
首先必须练习几个基本图形来了解它映射的思想。 散点图、直方图、条形图、密度图、箱线图。 然后加载包及数据集,选取一个小量数据集来做分析,测试数据如下: 各种属性映射由
不同的几何对象,要求的属性会有些不同,这些属性也可以在几何对象映射时提供。(属性就是需要google的,除非你全部熟记它们!)
1.散点图
或者是
2.直方图
3.条形图 以上两个等价(这里缺图,我懒得上传了)
4.密度函数图
5.箱式图
如果ggplot2只是有这39个内置图形函数那就太没意思了,每个映射都是可以细化调整的,包括X,Y轴,颜色,大小等具体的熟悉,只是需要时间来熟练使用!
这里, 统计变换是非常重要的功能,我们可以自己写函数,基于原始数据做某种计算,并在图上表现出来,也可以通过它改变geom_xxx函数画图的默认统计参数。
坐标系统控制坐标轴,可以进行变换,例如XY轴翻转,笛卡尔坐标和极坐标转换,以满足我们的各种需求。 坐标轴翻转由
而转换成极坐标可以由
合并画多个饼图
以及风玫瑰图(windrose)
ggplot2提供一些已经写好的主题,比如 还有二维密度图
好了,这篇诚意之作就写到这里,再次祝大家新年快乐! |
|