R语言:热图,火山图

> library(data.table)
> library(tidyverse)
> library(ggsignif) 
> library(RColorBrewer)
#install.packages("gplots")
> library(gplots)
> library(limma)
> library(ggplot2)
> library(ggrepel)
> library(Rcpp)

> rt=read.table("diffGeneExp.txt",sep="\t",header=T,check.names=F)
> rt=as.matrix(rt)

 id       logFC          logCPM         PValue          adj.P.Val      
CKM    "CKM"    "-8.576279957" " 5.459229724" " 0.000000e+00" " 0.000000e+00"
ACTA1  "ACTA1"  "-7.228533360" " 6.535926507" " 0.000000e+00" " 0.000000e+00"
MYLPF  "MYLPF"  "-7.209575984" " 2.618654657" " 0.000000e+00" " 0.000000e+00"
PYGM   "PYGM"   "-7.202706200" " 4.074830196" " 0.000000e+00" " 0.000000e+00"
SLN    "SLN"    "-6.733717683" " 1.961201804" " 0.000000e+00" " 0.000000e+00"
KLHL41 "KLHL41" "-6.656135657" " 3.030242156" " 0.000000e+00" " 0.000000e+00"

> rownames(rt)=rt[,1]
> exp=rt[,2:ncol(rt)]
> dimnames=list(rownames(exp),colnames(exp))
> data=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)
> diffExpLevel=avereps(data)

> hmExp=log10(diffExpLevel+0.00001)
> hmMat=as.matrix(hmExp)
> pdf(file="heatmap.pdf",height=7,width=7)
> par(oma=c(3,3,3,5))
> heatmap.2(hmMat,col='greenred',trace="none",cexCol=1)
> dev.off()

> rt=read.table("alldiff.txt",sep="\t",header=T,check.names=F)
> rt=as.matrix(rt)
> rownames(rt)=rt[,1]
> exp=rt[,2:ncol(rt)]
> dimnames=list(rownames(exp),colnames(exp))
> data=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)
> allDiff=avereps(data)
> allDiff=as.data.frame(allDiff)
> pdf(file="vol.pdf")

#不太好看。

> xMax=max(-log10(allDiff$adj.P.Val+0.00001))
> yMax=max(abs(allDiff$logFC))
> plot(-log10(allDiff$adj.P.Val), allDiff$logFC, xlab="-log10(adj.P.Val)",ylab="logFC",main="Volcano", xlim=c(0,xMax),ylim=c(-yMax,yMax),yaxs="i",pch=20, cex=0.4)
> diffSub=subset(allDiff, allDiff$adj.P.Val<0.05 & abs(allDiff$logFC)>1)
> points(-log10(diffSub$adj.P.Val), diffSub$logFC, pch=20, col="red",cex=0.4)
> abline(h=0,lty=2,lwd=3)
> dev.off()

> data = read.table("alldiff.txt", header=TRUE)
> head(data,10)

    id     logFC    logCPM PValue adj.P.Val
1     CKM -8.576280 5.4592297      0         0
2   ACTA1 -7.228533 6.5359265      0         0
3   MYLPF -7.209576 2.6186547      0         0
4    PYGM -7.202706 4.0748302      0         0
5     SLN -6.733718 1.9612018      0         0
6  KLHL41 -6.656136 3.0302422      0         0
7    MYOT -6.612275 0.8828837      0         0
8   TNNC2 -6.600796 3.1647841      0         0
9   ACTN3 -6.583526 0.9872158      0         0
10    NEB -6.500059 5.1964626      0         0

> logFC_cutoff <- with(data,mean(abs(logFC)) + 2*sd(abs(logFC)))
> logFC_cutoff 


> data$sig = as.factor(ifelse(data$adj.P.Val < 0.05 & abs(data$logFC) > logFC_cutoff,ifelse(data$logFC > logFC_cutoff ,'UP','DOWN'),'NOT'))
this_tile <- paste0('Cutoff for logFC is ',round(logFC_cutoff,3),'\nThe number of up gene is ',nrow(data[data$sig =='UP',]),'\nThe number of down gene is ',nrow(data[data$sig =='DOWN',])) 

> g = ggplot(data=data, aes(x=logFC, y=-log10(adj.P.Val), color=sig)) +
  geom_point(alpha=0.4, size=2.5) +
  theme_bw(base_size=15)+
  theme(panel.border = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black"))+
  xlab("logFC") + ylab("-Lgp") +
  ggtitle( this_tile ) +
  theme(plot.title = element_text(size=15,hjust = 0.5))+
  scale_colour_manual(values = c('blue','black','red'))
g

> g2<- g+ geom_hline(yintercept=-log10(0.05),colour="black", linetype="dashed") + 
  geom_vline(xintercept=c(-1,1),colour="black", linetype="dashed") 
> g2

交流学习

<think>嗯,用户想找用R语言绘制火山的示例代码。让我先看看他们提供的引用内容。引用3和4提到了使用ggplot2包绘制火山的具体步骤,包括数据准备、创建基础散点、着色和调整坐标轴标签。用户可能已经有一些数据,比如差异表达分析的结果,需要可视化。 首先,我需要确保示例代码的正确性。根据引用3,代码应该包括加载ggplot2、读取数据、创建ggplot对象、添加散点层,并根据p值和fold change着色。引用4提到了读取数据文件,比如volcano_data.txt,所以可能需要用户的数据有FoldChange、PValue和Significant列。 然后,用户可能遇到的常见问题,比如绘区域太小导致报错,这在引用5中提到过。所以应该在注意事项里提醒调整绘区域大小。 另外,用户提供的引用1和2是关于火山的其他实现,但用户明确问的是R语言,所以主要参考引用3和4。需要整理一个完整的示例,包括数据准备、绘代码、自定义颜色和主题调整。 可能需要检查代码中的语法是否正确,比如aes映射是否正确,scale_color_manual的参数是否正确设置。还要确保示例数据格式说明清楚,比如需要三列数据,以及如何判断显著性。 最后,生成相关问题,帮助用户深入理解,比如如何调整颜色、处理大数据集、添加基因标签等。这样用户可以根据自己的需求进一步修改代码。</think>### R语言绘制火山示例代码及说明 根据引用[3][4][5],以下是使用ggplot2包绘制火山的完整示例代码及说明: #### 数据准备 数据文件需包含三列: - `FoldChange` (差异倍数,建议取log2转换值) - `PValue` (显著性p值) - `Significant` (是否显著,TRUE/FALSE逻辑值) ```r # 加载包 library(ggplot2) # 读取数据(示例文件格式) dataset <- read.table("volcano_data.txt", header = TRUE) # 创建基础火山 volcano_plot <- ggplot(dataset, aes(x = FoldChange, y = -log10(PValue), color = Significant)) + geom_point(alpha = 0.6, size = 1.5) + # 设置点透明度和大小 scale_color_manual( values = c("grey70", "red3"), # 非显著/显著颜色 labels = c("非显著", "显著差异") # 例标签 ) + geom_hline(yintercept = -log10(0.05), # 添加p值阈值线 linetype = "dashed", color = "blue") + labs(x = "log2(Fold Change)", # 坐标轴标签 y = "-log10(p-value)", title = "差异表达基因火山") + theme_bw() + # 白色背景主题 theme(plot.title = element_text(hjust = 0.5)) # 标题居中 # 显示形 print(volcano_plot) ``` #### 关键参数说明 1. `geom_point()`中的参数: - `alpha=0.6`:设置点透明度避免重叠 - `size=1.5`:调整点大小适应不同数据量级 2. `scale_color_manual()`自定义颜色映射[^3] 3. `geom_hline()`添加显著性阈值参考线(p=0.05) 4. `theme_bw()`使用更简洁的白色主题[^4] #### 注意事项 1. 若出现`Viewport has zero dimension(s)`错误,需调整绘窗口大小[^5] 2. 数据预处理建议: ```r # 生成Significant列示例 dataset$Significant <- dataset$PValue < 0.05 & abs(dataset$FoldChange) > 1 ``` 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值