前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何试用 R 语言绘制散点图

如何试用 R 语言绘制散点图

原创
作者头像
玩转编程
发布2022-01-05 11:50:44
1.4K0
发布2022-01-05 11:50:44
举报
文章被收录于专栏:玩转编程
R语言绘制基因表达基因的“对称散点图

转录组分析中,计算了两组间差异表达的基因后,通常怎样表示?您可能第一时间想到可以使用火山图。的确,火山图是使用频率最多的,在火山图中可以很轻松地根据基因在两组间的Fold

Change值以及显著性p值,识别和判断差异表达基因概况。火山图实质上就是一种散点图,通常横纵坐标分别代表了log2转化后的Fold Change以及-

log10转化后的p值或p调整值信息(下图左)。提到散点图,常见的还有另一种展示差异表达基因的样式:横纵坐标轴可分别代表两组基因表达均值,这种风格可以更方便直观对比基因在两组中的差异状态。

1 示例文件

示例文件“gene_diff.txt”是一组基因差异表达分析结果,记录了处理组(treat)和对照组(control)间表达显著不一致的基因,鉴定标准为p<0.01以及|log2

Fold Change|≥1。

其中,gene_id为基因名称;control和treat代表了两组中基因的平均表达值;log2FoldChange即log2转化后的基因表达差异倍数;pvalue是差异基因显著性p值;diff为根据p<0.01以及|log2

Fold Change|≥1筛选的差异基因,该列中“up”为上调,“down”为下调,“none”为非差异基因。

接下来通过该示例文件,展示使用R语言绘制差异基因表达“对称散点图”过程。

2 数据预处理

首先对数据做一些预处理。

例如,基因表达值数量级相差过大,取个对数转换;基因名称按是否为差异基因作个排序,避免后续作图时被不显著的基因点遮盖,即排序的目的是让这些显著基因的点都位于图的上方。

代码语言:txt
复制
#读取示例数据
代码语言:txt
复制
express <- read.delim('gene_diff.txt', sep = '\t')
代码语言:txt
复制
#将基因表达值取个log(1+)转换
代码语言:txt
复制
express$control <- log(express$control+1)
代码语言:txt
复制
express$treat <- log(express$treat+1)
代码语言:txt
复制
#排序,目的是将显著的基因展示在前方图层,避免被不显著基因的点遮盖
代码语言:txt
复制
express$diff <- factor(express$diff, levels = c('up', 'down', 'none'))
代码语言:txt
复制
express <- express[order(express$diff, decreasing = TRUE), ]
代码语言:txt
复制
head(express)  #查看读取并预处理后的数据表格

3 绘制差异基因散点图,颜色表示差异基因

下来就可以使用预处理后的数据作图了。

第一种类型是将基因按上调、下调或不显著类型着色,便于从图中辨认差异基因。我们使用ggplot2的方法绘制差异基因散点图。

代码语言:txt
复制
#绘制散点图,显著上、下调基因以不同颜色区分
代码语言:txt
复制
library(ggplot2)
代码语言:txt
复制
ggplot(express, aes(x = control, y = treat)) +
代码语言:txt
复制
geom_point(aes(color = diff), size = 1) +  #按上下调指定基因点的颜色
代码语言:txt
复制
scale_color_manual(values = c('red', 'gray', 'green4'), limit = c('up', 'none', 'down')) +  #上下调基因颜色赋值
代码语言:txt
复制
theme_bw() +  #背景调整
代码语言:txt
复制
labs(x = 'control group', y = 'treat group', color = '') +  #坐标轴标题设置
代码语言:txt
复制
geom_abline(intercept = 1, slope = 1, col = 'black', linetype = 'dashed', size = 0.5) +  #这3句用于添加 |log2FC|>1 的阈值线
代码语言:txt
复制
geom_abline(intercept = -1, slope = 1, col = 'black', linetype = 'dashed', size = 0.5) +
代码语言:txt
复制
geom_abline(intercept = 0, slope = 1, col = 'black', linetype = 'dashed', size = 0.5)

两个坐标轴分别代表了处理组(treat)和对照组(control),图中的点代表各基因在两组中的平均表达值(已经作了log转换)。treat组和control组相比,上调基因以红色表示,下调基因以绿色表示。图中的虚线代表了|log2FC|=1时的阈值线。

在该图中,我们可以很轻松地观察差异基因整体分布状态和数量比较的信息。

4 绘制差异基因散点图,颜色表示p值

上图中没有将p值信息展示出。因此另一种思路是,颜色代表p值,这样就可以在图中获得一个渐变梯度。同样使用ggplot2的方法绘制,和上述过程相比仅在颜色指定上存在区别。

代码语言:txt
复制
#按 p 值数值的渐变色散点图
代码语言:txt
复制
ggplot(express, aes(x = control, y = treat)) +
代码语言:txt
复制
geom_point(aes(color = pvalue), size = 0.8) +  #按 p 值大小指定基因点的颜色
代码语言:txt
复制
scale_color_gradient2(low = 'red', mid = 'darkgoldenrod2', high = 'royalblue2', midpoint = 0.5) +  #渐变色颜色指定
代码语言:txt
复制
theme_bw() +  #背景调整
代码语言:txt
复制
labs(x = 'control group', y = 'treat group', color = 'p-value') +  #坐标轴标题设置
代码语言:txt
复制
geom_abline(intercept = 1, slope = 1, col = 'black', linetype = 'dashed', size = 0.5) +  #这3句用于添加 |log2FC|>1 的阈值线
代码语言:txt
复制
geom_abline(intercept = -1, slope = 1, col = 'black', linetype = 'dashed', size = 0.5) +
代码语言:txt
复制
geom_abline(intercept = 0, slope = 1, col = 'black', linetype = 'dashed', size = 0.5)

类似上图,两个坐标轴分别代表了处理组(treat)和对照组(control),图中的点代表各基因在两组中的平均表达值(已经作了log转换),图中的虚线代表了|log2FC|=1时的阈值线。

和上图不同点在于,此时基因按显著性p值着色,从不显著>显著展示以蓝色>红色渐变,就获得了一种梯度信息。这样可以很方便地看出,在两组中的表达值差异越大的基因,p值越小,二者趋势是一致的,重在描述了差异倍数和p值的关系。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • R语言绘制基因表达基因的“对称散点图
  • 1 示例文件
  • 2 数据预处理
  • 3 绘制差异基因散点图,颜色表示差异基因
  • 4 绘制差异基因散点图,颜色表示p值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档