本文将会教大家用ggplot2画一个RNAseq差异表达后常见的一个图——火山图。
下边是我们用DESeq2得到的差异表达的基因的一个表格情况。我们只需要用到logFC(log10Fold Change)和padj(校正后的p value)作图。所以我就只以这两列为例,作图。
首先,生成包含logFC和padj的一个数据集。
logFC <>10000,mean=0,sd=4),1000,replace = T)padj <->->10000, 0, 0.08) ,1000,replace = T)
sample
是随机抽样的一个函数,rnorm
从生成正态分布中生成数,而runif
则是从生成均匀分布中生成数。
把刚刚生成的数做成一个数据框:
data <- data.frame(logfc="">->
为了后续画图方便,我们先把数据作一下分类。在这里,我们把fold change大于-2和小于2,以及padj < 0.05="">
data$sig[(data$padj > 0.05|data$padj=='NA')|(data$logFC <>2)& data$logFC > -2] <->->'no'data$sig[data$padj <=>=>0.05 & data$logFC >= 2] <->->'up'data$sig[data$padj <=>=>0.05 & data$logFC <=>=>2] <->->'down'
好,可以开始画图了:
# 选最大值作为xlim的上下边界x_lim <->->
我们把padj做了一个-log10
的变换:
# 绘制火山图p <->->1*log10(padj),color = sig))+geom_point()+ xlim(-x_lim,x_lim) + labs(x='log2(FC)',y='-log10(FDR)')+ ggtitle('Volcano plot')print(p)
关于上边不了解的参数,建议可以尝试自己调整和删减,查看图片的变化,就可以知道这个参数是什么作用了。
由于fold change大于-2和小于2,以及padj < 0.05="">
volcano <- p="" +="" scale_color_manual(values="">->'#619cff','grey','#f8766d'))print(volcano)
再添加几条阈值的线:
volcano <- volcano="" +="" geom_hline(aes(yintercept="">->1*log10(0.05)),colour='black', linetype='dashed') + geom_vline(xintercept=c(-2,2),colour='black', linetype='dashed')print(volcano)
保存刚刚做好的图:
ggsave(('Volcano.png',volcano,device = 'png')
最后附上完整代码:
logFC <>10000,mean=0,sd=4),1000,replace = T)padj <->->10000, 0, 0.08) ,1000,replace = T)data <- data.frame(logfc="logFC,padj=padj)data$sig[(data$padj"> 0.05|data$padj=='NA')|(data$logFC <>2)& data$logFC > -2] <->->'no'data$sig[data$padj <=>=>0.05 & data$logFC >= 2] <->->'up'data$sig[data$padj <=>=>0.05 & data$logFC <=>=>2] <->->'down'# 选最大值作为xlim的上下边界x_lim <->-># 绘制火山图p <->->1*log10(padj),color = sig))+geom_point()+ xlim(-x_lim,x_lim) + labs(x='log2(FC)',y='-log10(FDR)')+ ggtitle('Volcano plot')print(p)volcano <- p="" +="" scale_color_manual(values="">->'#619cff','grey','#f8766d'))print(volcano)volcano <- volcano="" +="" geom_hline(aes(yintercept="">->1*log10(0.05)),colour='black', linetype='dashed') + geom_vline(xintercept=c(-2,2),colour='black', linetype='dashed')print(volcano)ggsave(('Volcano.png',volcano,device = 'png')->
联系客服