if(!require("qqman"))install.packages("qqman")
if(!require("CMplot"))install.packages("CMplot")
library(qqman)
#library(CMplot)
library(tidyverse)
setwd('F:/R/tmp/')
#输入文件格式如下:
# SNP CHR BP P
# 其中SNP列为SNP名称,这一列可以没有
# CHR,BP分别为SNP所在的染色体和位置
# P表示该SNP的关联显著性p值
data<-readxl::read_xlsx("rMVP.xlsx",sheet = 4)
#use search() to determine whether all the packages have loaded
# 取bonferroni矫正阈值
fdr=0.01/3352885
data1<-data %>% select(,1:4)
#CMplot(data1,plot.type = "m",multracks = TRUE,threshold = fdr,dpi = 300,file = "jpg")
#data(package="CMplot")#查看R包带的数据集
#view("pig60k")查看R包示例数据
#计算染色体长度
chr_len <-data1 %>% group_by(CHR) %>%
summarise(chr_len=max(BP))
#计算每条chr的初始位置
chr_pos<- chr_len %>%
mutate(total=cumsum(chr_len)-chr_len) %>%
select(-chr_len)
#计算累计SNP的位置
Snp_pos<- chr_pos %>%
left_join(data1, .,by="CHR")%>%
arrange(CHR,BP) %>%
mutate(BPcum=BP+total)
head(Snp_pos,2)
X_axis <- Snp_pos %>% group_by(CHR) %>% summarize(center=( max(BPcum) +min(BPcum) ) / 2 )
p <- ggplot(Snp_pos, aes(x=BPcum, y=-log10(P))) +
#设置点的大小,透明度
geom_point(aes(color=as.factor(SNP)), alpha=0.8, size=1.3) +
#设置颜色
#scale_color_manual(values = rep(c("grey", "skyblue"), 22 )) +
#设定X轴
scale_x_continuous( label = X_axis$CHR, breaks= X_axis$center ) +
#去除绘图区和X轴之间的gap
scale_y_continuous(expand = c(0, 0) )+
labs(x="Chromosome",y="-log10(Pvalue)",title = "")+
theme(legend.title=element_blank())+
theme(legend.text = element_text(face = "bold",family = "serif"))+
theme(axis.text.x = element_text(size = 10,colour = "black",face = "bold",family = "serif"))+
theme(axis.text.y = element_text(size = 10,colour = "black",face = "bold",family = "serif"))+
theme(axis.title.x = element_text(size = 12,face = "bold",family = "serif"))+
theme(axis.title.y = element_text(size = 12,face = "bold",family = "serif"))
ggsave(p,filename = "different_condition.png")
#部分内容来自https://blog.csdn.net/ddxygq/article/details/103555955
分类:
GWAS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)