使用 ggplot包 绘制火山图,需要一个dataframe并包含如下信息:
- log2FoldChange:绘制x轴
- pvalue或padj:绘制y轴
- Change:元素为up、down或none,用于散点上色
library("ggplot2")
一、添加"Change"列
View(result)
log2FC阈值:0.5;padj阈值:0.05
thres_log2FC=0.5
thres_p=0.05
result[which(result$log2FoldChange >= thres_log2FC & result$padj < thres_p),'Change'] <- 'up'
result[which(result$log2FoldChange <= -thres_log2FC & result$padj < thres_p),'Change'] <- 'down'
result[which(abs(result$log2FoldChange) <= thres_log2FC | result$padj >= thres_p),'Change'] <- 'none'
View(result)
write.csv(result,file = "gleason high vs low_result.csv",quote = FALSE)
二、ggplot2作图
p <- ggplot(data = result, aes(x = log2FoldChange, y = -log10(padj), color = Change)) +
geom_point(size = 1) + #绘制散点图
scale_color_manual(values = c('red', 'gray', 'green'), limits = c('up', 'none', 'down')) + #自定义点的颜色
labs(x = 'log2 Fold Change', y = '-log10 adjust p-value', title = 'gleason high vs low', color = '') + #坐标轴标题
theme(plot.title = element_text(hjust = 0.5, size = 14), panel.grid = element_blank(), #背景色、网格线、图例等主题修改
panel.background = element_rect(color = 'black', fill = 'transparent'),
legend.key = element_rect(fill = 'transparent')) +
geom_vline(xintercept = c(-thres_log2FC, thres_log2FC), lty = 3, color = 'black') + #添加阈值线
geom_hline(yintercept = -log10(thres_p), lty = 3, color = 'black')
#+ xlim(-5, 5) + ylim(0, 15) #定义刻度边界
p