R实用绘图--火山图 / ggplot2
创作时间:
作者:
@小白创作中心
R实用绘图--火山图 / ggplot2
引用
CSDN
1.
https://m.blog.csdn.net/weixin_46587777/article/details/138032307
火山图由散点图和阈值线构成,它通常用于展现统计检验的显著性(如:p value)和变化幅度(如:差异倍数),能够帮助我们快速直观地识别出那些变化幅度较大且具有统计学意义的数据点(如:差异基因)。常应用于生物学中的转录组、基因组等研究中。
图形解读
以封面中的彩色渐变火山图为例,点的颜色和点的大小均反映了-Log10(adjPvalue)的大小,该值越大点越大,颜色也越红。两条垂直线是Log2FC的阈值线,水平线是adjPvalue的阈值线。
绘图
加载包和数据
# 加载包、读取数据
library(ggplot2)
library(ggrepel)
library(RColorBrewer)
library(tidyverse)
load('./degdata.Rdata')
colnames(degdata)
绘图数据准备
# 设定差异基因阈值
degdata$status <- 'stable'
degdata$status[degdata$logFC>1 & degdata$adj.P.Val<0.05] <- 'up'
degdata$status[degdata$logFC< -1 & degdata$adj.P.Val<0.05] <- 'down'
# 挑选出差异基因子集,用于后续添加label
labeldata <- subset(degdata, abs(logFC)>1 & adj.P.Val<0.05)
id <- order(-log10(labeldata$adj.P.Val),decreasing = T)
labeldata <- labeldata[id,]
基础版
# (1)基础版-------------------------------------------
ggplot(degdata,aes(logFC,-log10(adj.P.Val)))+
# 绘制散点
geom_point(aes(color=status),
size=1.5)+
# 绘制垂直线
geom_vline(xintercept = c(log2(1/2),log2(2)), linetype = "dashed")+
# 绘制水平线
geom_hline(yintercept = -log10(0.05), linetype = "dashed")+
theme_bw()+
# 设置点的颜色
scale_color_manual(values = c('red','grey','blue'))+
# 设置标签注释
geom_text_repel(data = labeldata[1:10,],
aes(label = label,color=status),
size=2.5)+
# 横轴标题
xlab('Log2FC')+
# 纵轴标题
ylab('-Log10(adjPvalue)')
ggsave('plot1.pdf',width = 7,height = 5.5)
进阶版
# (2)进阶版-------------------------------------------
ggplot(data = degdata,
mapping = aes(
x=logFC,
y=-log10(adj.P.Val)))+
# 绘制散点
geom_point(aes(color=status,
size= -log10(adj.P.Val)),
alpha=1)+
# 绘制垂直线
geom_vline(xintercept = c(log2(1/2),log2(2)), linetype = "dashed")+
# 绘制水平线
geom_hline(yintercept = -log10(0.05), linetype = "dashed")+
theme_bw()+
# 设置点的颜色
scale_color_manual(values = c('#ffcc00','grey','#0066ff'))+
# 设置点的大小范围
scale_size_continuous(range = c(0.3,3)) +
# 设置标签注释
geom_text_repel(data = labeldata[1:10,],
mapping = aes(label = label,color=status),
size=2)+
# 横轴标题
xlab('Log2FC')+
# 纵轴标题
ylab('-Log10(adjPvalue)')
ggsave('plot2.pdf',width = 7,height = 5.5)
彩色渐变版
# (3)彩色渐变版-------------------------------------------
ggplot(data = degdata,
mapping = aes(
x=logFC,
y=-log10(adj.P.Val)))+
# 绘制散点
geom_point(aes(color=-log10(adj.P.Val),
size= -log10(adj.P.Val)),
alpha=1)+
# 绘制垂直线
geom_vline(xintercept = c(log2(1/2),log2(2)),
linetype = "dashed",
color='#363636')+
# 绘制水平线
geom_hline(yintercept = -log10(0.05),
linetype = "dashed",
color='#363636')+
theme_bw()+
# 设置点的颜色
scale_color_gradientn(colours = brewer.pal(11,'RdYlBu') %>% rev())+
# 设置点的大小范围
scale_size_continuous(range = c(0.3,3)) +
# 设置标签注释
geom_text_repel(data = labeldata[1:10,],
mapping = aes(label = label,
color=-log10(adj.P.Val)),
size=2.5)+
# 横轴标题
xlab('Log2FC')+
# 纵轴标题
ylab('-Log10(adjPvalue)')+
# 去除一个图例,设置另一个图例的标题
guides(size=FALSE,
color=guide_colorbar(title = '-Log10(adjPvalue)')) # guide_colorbar是设置连续型变量图例的
ggsave('plot3.pdf',width = 7,height = 5.5)
提示
如果运行绘图代码后出现这个报错,一般是由于绘图区域太小了,调大绘图区域重新运行代码就可以啦。
初学R绘图的小伙伴可以自己尝试绘制一下火山图,火山图的代码其实并不难,但是它需要用到的ggplot2的基础语法比较多,可以拿火山图练练手学习一下ggplot2的基础语法。
热门推荐
腊肉健康食用全攻略:浸泡、焯水等5步减少亚硝酸盐
五花肉腊肉制作详解:5个选材技巧+3步制作要点
浙江青田:秋日慢生活的最佳选择
秋游黟县:邂逅江南最美秋色
西安三日游打卡网红古建园林
跟着阿杰,解锁西安隐藏美景
跟着小洁玩转西安三日游
降血壓膽固醇燕麥飯!搭配1湯1甜品「護心套餐 」更健康
维C含量超普通馒头14倍,土豆馒头成健康饮食新宠
自制旺仔小馒头:土豆淀粉是关键,6步做出蓬松柔软口感
糖尿病视网膜病变患者的燕麦食谱指南
中医食疗助力糖尿病视网膜病变管理
燕麦:糖尿病视网膜病变患者的控糖护眼之选
如何实现服务器远程安装操作系统?
梦见太阳:希望与机遇的象征
工程项目管理的3个基本阶段及其关键任务
CAD工程制图规则
腰椎间盘突出用药指南:双氯芬酸钠缓释片的使用注意事项
专家提醒:双氯芬酸钠可缓解流感症状,但需遵医嘱服用
告别甜蜜陷阱:高糖饮食的危害与八个实用建议
50岁高熟龄妇女如何补充钙质?「高钙食物图鉴」必收藏!
柚子与他汀类药物不能同食,严重可致横纹肌溶解
入门运动指南:有氧、力量、柔韧性训练详解
打乒乓球不仅强身健体,还能提升反应力和社交技能
从基础到高级:乒乓球反手横板技术动作解析
探秘西安大雁塔:丝路明珠的千年传奇
西安城墙与泡馍:千年古都的古今交融
西安城墙摄影指南:绝美打卡点揭秘
秋日打卡西安古城墙:穿越千年的历史之旅
钦州至成都自驾攻略:热带雨林、喀斯特地貌、三峡风光一线串