一、数据集准备
主要用到的就是log2foldchange和pvalue/padj值
二、画图
library(ggplot2)
k_DIPG17_2_1_merge_2vs1_25 <- read.csv("DIPG17_2_1_merge_2vs1_25.csv")
DIPG17_2_1_merge_2vs1_25_up<-subset(k_DIPG17_2_1_merge_2vs1_25,pvalue<0.05 & log2FoldChange >1)
DIPG17_2_1_merge_2vs1_25_down<-subset(k_DIPG17_2_1_merge_2vs1_25,pvalue<0.05 & log2FoldChange < -1)
DIPG17_2_1_merge_2vs1_25_none<-subset(k_DIPG17_2_1_merge_2vs1_25,pvalue>0.05 | (log2FoldChange< 1 &log2FoldChange> -1))
up_2vs1_25<-dim(DIPG17_2_1_merge_2vs1_25_up)[1]
down_2vs1_25<-dim(DIPG17_2_1_merge_2vs1_25_down)[1]
none_diff_2vs1_25<- dim(DIPG17_2_1_merge_2vs1_25_none)[1]
total<-up_2vs1_25+down_2vs1_25
uplable=paste("Up :",up_2vs1_25)
downlable=paste("Down :",down_2vs1_25)
none_diff_lable=paste("No Change:",none_diff_2vs1_25)
DIPG17_2_1_merge_2vs1_25_up$sig<-uplable
DIPG17_2_1_merge_2vs1_25_down$sig<-downlable
DIPG17_2_1_merge_2vs1_25_none$sig<-none_diff_lable
k_DIPG17_2_1_merge_2vs1_25<-rbind(DIPG17_2_1_merge_2vs1_25_up,DIPG17_2_1_merge_2vs1_25_down,DIPG17_2_1_merge_2vs1_25_none)
logpadj= -log10(k_DIPG17_2_1_merge_2vs1_25$padj)
p <- ggplot(k_DIPG17_2_1_merge_2vs1_25)+geom_point(aes(x=log2FoldChange,y=logpadj,color=sig),size=0.8)
p <- p + ggtitle(paste(""))+xlab("log2FoldChange")+ylab("-log(padj)")+expand_limits(x=c(-10,10))
p<-p+scale_color_manual(values=c("blue","grey","red"))
p
得到火山图
添加标签的
数据格式
p <- ggplot(data = DESeq_sample_WTvsA2KO_p0.05_label, aes(x = log2FoldChange, y = -log10(pvalue), colour=sig,label = SYMBOL)) +
geom_point(alpha=0.4, size=2.5) +
scale_color_manual(values=c("blue", "grey","red")) +
xlim(c(-8, 8))+geom_vline(xintercept=c(-0.5,0.5),lty=4,col="black",lwd=0.8)+geom_text_repel(
data = subset(DESeq_sample_WTvsA2KO_p0.05_label, DESeq_sample_WTvsA2KO_p0.05_label$pvalue < 0.001 & abs(DESeq_sample_WTvsA2KO_p0.05_label$log2FoldChange) >= 3),
aes(label = SYMBOL),
size = 3,
box.padding = unit(0.5, "lines"),
point.padding = unit(0.8, "lines"), segment.color = "black", show.legend = FALSE )+labs(x="log2(fold change)",y="-log10 (p-value)",color = NULL)#color-NULL可以去掉legend名称 +
theme(plot.title = element_text(hjust = 1), legend.position="left", legend.title = NULL)
p <- p+theme_bw()
#theme(panel.grid=element_blank())#去背景和网格线
p
如果出现以下错误:
Error in grid.Call(C_convert, x, as.integer(whatfrom), as.integer(whatto), :
Viewport has zero dimension(s)
那么把画图框拉大即可
参考
【R ·我的报错日常】Error in grid.Call(C_convert, x, as.integer(whatfrom), as.integer(whatto), : Viewport ha
diffexpr_results <- read.csv("diffexpr-results.csv")
diffexpr_results$change = ifelse(diffexpr_results$padj < 0.05 & abs(diffexpr_results$log2FoldChange) >= 0.5,
ifelse(diffexpr_results$log2FoldChange>0.5 ,'Up','Down'),
'Stable')
head(diffexpr_results)
p <- ggplot(
# 数据、映射、颜色
diffexpr_results, aes(x = log2FoldChange, y = -log10(padj), colour=change)) +
geom_point(alpha=0.4, size=3.5) +
scale_color_manual(values=c("blue", "grey","red"))+
# 辅助线
geom_vline(xintercept=c(-1,1),lty=4,col="black",lwd=0.8) +
geom_hline(yintercept = -log10(0.05),lty=4,col="black",lwd=0.8) +
# 坐标轴
labs(x="log2(fold change)",
y="-log10 (padj)")+
theme_bw()+
# 图例
theme(plot.title = element_text(hjust = 0.5),
legend.position="right",
legend.title = element_blank())
p