如何用 R 语言绘制火山图?
丁香园
测序技术的火爆程度,大家有目共睹,做了测序就一定会涉及差异分析的表达,差异分析最常用的就是「火山图」和「热图」了。
看看这两种图形在顶级期刊中的出场率!
图片来源:各期刊截图
这两种图形最常用的是用 R 语言绘制,但很多人不知道 GraphPad prism 软件同样也可实现。
今天,我们就两种图形的 R 语言和 GraphPad prism 画法进行教学!小伙伴们选择适合自己的就行。
一、火山图
火山图展示的是差异分子的显著性(P<0.05 或者 P<0.01,作图时进行 - log10 转化)和变化倍数(变化倍数 LOG2 处理)。
火山图的优点是直观待筛的展示分子的整体差异变化结果。但是不能展示每个样本的表达变化。
如果想展示感兴趣的差异表达显著的分子,火山图是一个很好的选择。
1. R 语言画法
测序报告中展示的火山图通常是基于 R 语言绘制的。
R 安装下载网址(长按复制至地址栏):https://www.r-project.org/
首先,准备数据。在此以一份 miRNA 芯片数据为例。
数据链接(想练手的可下载):https://pan.baidu.com/s/ 1jL4W9Tu8 hFaBH2I6FgF_kw
图片来源:数据截图
接着,教大家一种最简单的 R 代码,只需用 plot 函数就可实现。
R 代码如下:
图片来源:自己做的
(1)创建工作目录,读入数据,一般保存为 txt 文件读入;(代码 1、2)
(2)将「P.Value」进行「-log10」处理,设置为 Y 轴。一般测序文件对变化倍数进行了「log2」处理。「log2FC」设为 x 轴。(代码 3、4)
(3)画出散点图,添加 X,Y 轴名称,图形名称以及「点」的颜色。(代码 5、6)
图片来源:自己做的
(4)分别设置 P 值和变化倍数的阈值,阈值的设置按照个人要求。(代码 7、8)
(5)对于变化倍数大于 2 的上调基因标记为红色,下调基因标为蓝色。(代码 9、10)
图片来源:自己做的
(6)添加阈值线。(代码 11、12、13)
最终效果如下:
图片来源:自己做的
最后,点击「export」,选择图片格式导出图片即可。
图片来源:软件截图
2. GraphPad prism 绘制
如有小伙伴觉得 R 代码麻烦,则可选用常见软件「GraphPad prism」制图。
软件可在官网下载:https://www.graphpad.com/scientific-software/prism/
首先, 在 excel 中进行 P 值的处理。
数据格式如下,选中需处理的数据,插入公式「=-LOG10 (P value)」
图片来源:自己做的
打开 GraphPad prism5 软件,选择「XY」-「散点图」。
图片来源:软件截图
粘贴数据至软件,如下:
图片来源:软件截图
图片来源:自己做的
接着,进行修饰
双击 Y 轴,点击「frame and origin」-「set origin」-「lower left」,将坐标轴放置左边。
图片来源:软件截图
添加阈值线
「x = 2」和「x =- 2」,表示变化倍数大于 4。同时设置「Y = 1.30103」,这个值对应「-log10 0.05.」表示 P 值小于 0.05。
在刚才出现的界面,点击「X axis」-「additional ticks and grid lines」。
再点击「Y axis」-「additional ticks and grid lines」,输入数字,勾选「line」。
图片来源:软件截图
图片来源:软件截图
点击红色区域,设置阈值线格式,包括颜色,粗细等。
图片来源:软件截图
如下:
图片来源:自己做的
右键单击任意的「点」,设置「点」的大小、颜色、尺寸等。这里把几个显著上调基因标为红色,下调的标为蓝色。
图片来源:软件截图
图片来源:软件截图
还可添加感兴趣的基因名称到火山图,这样就更加直观了。
右键单击某个点 -「format this point」-「show row names」。这样就显示名称了。双击文字,可以修改字体及大小。最后加上坐标轴名称,整个图就完成了。如下:
图片来源:软件截图
图片来源:自己做的
最后,按照所需格式保存即可。
二、热图
热图,主要展示某个基因在各个样本中的表达情况。
热图的优点是能够直观的看出基因在样品中的表达变化趋势,能很好的展示整体表达变化。热图也是测序数据必要的展示手段。
1. R 语言绘制
画热图需要的数据是基因的表达矩阵,这里自己整理了一个示例数据。行为「基因」,列为「样本」。
数据连接(感兴趣者可下载练习):
https://pan.baidu.com/s/ 1IBJxheWqz8EvfBMdzrliaw
图片来源:自己做的
代码如下:
图片来源:自己做的
(1)创建工作目录;(代码 1)
(2)对样品进行分类;(代码 2)
(3)读入表达文件;(代码 3)
(4)明确分组信息,与表达矩阵结合,并查看;(代码 4、5)
(5)载入画图的软件包 heatmap;(代码 6)
(6)画图并制定图形信息。(代码 7)
重要代码信息解释如下:
图片来源:自己做的
最终效果图:
图片来源:自己做的
最后,保存图片即可。
2. GraphPad prism 绘制
火山图低版本的 GraphPad prism 就可实现,热图是最新版本增加的功能。最新版本还有很多新的功能哦!大家快学习起来吧。
打开软件,界面如下,点击「grouped」- 选择「enter or import data into a newtable」-「option」选择「enter and plot a single Y for each point」。
图片来源:软件截图
将数据粘贴至软件中:
图片来源:软件截图
进行相关系数分析
点击「analysis」-「multiple variable analyses」-「correlation matrix」-「OK」。
图片来源:软件截图
这里选择 person 相关系数,也可选择其他,按照自己需求,然后点击「OK」即可。
图片来源:软件截图
样品间的相关系数矩阵如下:
图片来源:软件截图
点击左侧「Graphs」下的「new graph」-「grouped」-「Heat map」。
图片来源:软件截图
图片来源:软件截图
点击「OK」,即刻生成初步的图形。
图片来源:自己做的
接着,进行图形调整
双击图形,在出现的界面中设置热图颜色和行列名等。
图片来源:软件截图
图片来源:软件截图
最后,保存并导出图片。
此类热图也有一个小缺点,不能进行聚类,笔者也期望后续的软件更新会解决这个问题。
以上就是用 R 语言和 GraphPad prism 软件绘制火山图和热图的方法。
当然,除了这两种绘制方法。目前还有一大批在线的工具可供我们使用,在此,笔者提供两个网址,有兴趣的小伙伴可去尝试绘制一下:
SOURCEFORGE
网址:https://sourceforge.net/projects/mev-tm4 /
OMICSHARE
网址:https://www.omicshare.com/tools/