news 2026/6/12 19:35:19

多个性状曼哈顿图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多个性状曼哈顿图
library(qqman)# 创建示例数据 - 改为3个染色体set.seed(123)n_snps<-900n_chr<-3# 创建数据data<- data.frame(SNP=paste0("rs",1:n_snps), CHR=rep(1:n_chr, each=n_snps/n_chr), BP=unlist(lapply(1:n_chr, function(x)sort(sample(1:2e6, n_snps/n_chr)))), P1=runif(n_snps), P2=runif(n_snps), P3=runif(n_snps))# 计算-log10(P)data$logP1<- -log10(data$P1)data$logP2<- -log10(data$P2)data$logP3<- -log10(data$P3)# 第一步:计算染色体边界,增加间距data$x_pos<- NA lastbase<-0ticks<- NULL chr_ends<- c()# 增加染色体间距的倍数space_multiplier<-0.3# 控制间距大小,值越大间距越大for(iin1:n_chr){chr_data<- data[data$CHR==i,]chr_length<- max(chr_data$BP, na.rm=TRUE)- min(chr_data$BP, na.rm=TRUE)if(i==1){data$x_pos[data$CHR==i]<- data$BP[data$CHR==i]}else{# 增加间距:前一个染色体的长度 + 间距lastbase<- lastbase + max(data$BP[data$CHR==(i-1)], na.rm=TRUE)+(chr_length * space_multiplier)data$x_pos[data$CHR==i]<- data$BP[data$CHR==i]+ lastbase}# 记录染色体结束位置chr_ends<- c(chr_ends, max(data$x_pos[data$CHR==i], na.rm=TRUE))# 计算染色体中心位置(用于x轴标签)ticks<- c(ticks,(min(data$x_pos[data$CHR==i], na.rm=TRUE)+ max(data$x_pos[data$CHR==i], na.rm=TRUE))/2)}# 第二步:创建空绘图区域par(mar=c(5,5,4,2))pdf(file="1.pdf")plot(NA, xlim=c(min(data$x_pos, na.rm=TRUE), max(data$x_pos, na.rm=TRUE)), ylim=c(0, max(c(data$logP1, data$logP2, data$logP3), na.rm=TRUE)+1), xlab="Chromosome", ylab=expression(-log[10](italic(p))), xaxt="n",# 不显示默认x轴yaxt="n",# 不显示默认y轴bty="n", main="Three Chromosomes with Increased Spacing", cex.main=1.2)# 第三步:为每个性状单独绘制# 性状1 - 用三角形points(data$x_pos, data$logP1, col=adjustcolor("blue", alpha.f=0.7), pch=17, cex=0.8)# 性状2 - 用圆形points(data$x_pos, data$logP2, col=adjustcolor("red", alpha.f=0.7), pch=19, cex=0.8)# 性状3 - 用方形points(data$x_pos, data$logP3, col=adjustcolor("green", alpha.f=0.7), pch=15, cex=0.8)# 添加染色体分隔线(更明显)if(n_chr>1){for(iin1:(n_chr-1)){# 染色体间的分隔线abline(v=chr_ends[i]+(min(data$x_pos[data$CHR==(i+1)], na.rm=TRUE)- chr_ends[i])/2, col="gray60", lty=2, lwd=1.5)}}# 添加x轴axis(1, at=ticks, labels=paste("Chr",1:n_chr), cex.axis=1, font=2)# 添加y轴y_ticks<- pretty(c(0, max(c(data$logP1, data$logP2, data$logP3), na.rm=TRUE)))axis(2, at=y_ticks, las=1, cex.axis=0.9)# 添加网格线abline(h=y_ticks, col="gray90", lty=3, lwd=0.5)# 添加显著线abline(h=-log10(5e-8), col="red", lty=2, lwd=2)text(x=max(data$x_pos, na.rm=TRUE)*0.05, y=-log10(5e-8)+0.2, labels="5e-8", col="red", cex=0.8)# 添加图例legend("topright", legend=c("Trait 1","Trait 2","Trait 3"), col=c("blue","red","green"), pch=c(17,19,15), bty="o", box.col="gray",bg="white", cex=0.9, pt.cex=1.2)# 添加边框box(col="gray60", lwd=1)dev.off()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 16:55:21

大麦抢票神器:DamaiHelper全自动解决方案完全指南

还在为抢不到心仪演唱会的门票而烦恼吗&#xff1f;面对秒光的票务市场&#xff0c;手动操作已经难以应对。现在&#xff0c;DamaiHelper这款基于PythonSelenium开发的智能抢票工具&#xff0c;将为你带来全新的购票体验&#xff0c;让你轻松拥有热门演出的入场券。 【免费下载…

作者头像 李华
网站建设 2026/6/12 20:35:17

【AI大模型准入门槛】:Open-AutoGLM邀请码背后的秘密与价值

第一章&#xff1a;Open-AutoGLM 邀请码的行业背景与准入逻辑在人工智能技术快速演进的背景下&#xff0c;大语言模型&#xff08;LLM&#xff09;的研发与应用正从封闭走向开放协作。Open-AutoGLM 作为面向开发者与研究者的开源智能引擎平台&#xff0c;其邀请码机制并非简单的…

作者头像 李华
网站建设 2026/6/11 6:02:49

突破付费墙的终极解决方案:5种高效内容访问方法完全指南

突破付费墙的终极解决方案&#xff1a;5种高效内容访问方法完全指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息获取成本日益增加的今天&#xff0c;付费墙已成为阻碍知识传…

作者头像 李华
网站建设 2026/6/12 7:36:57

系统学习USB Burning Tool的PC端工作模式切换

深入掌握USB Burning Tool的PC端模式切换&#xff1a;从“变砖”恢复到自动化烧录实战你有没有遇到过这样的场景&#xff1f;一台基于Amlogic芯片的设备&#xff0c;刷机后彻底无法启动——电源灯亮着&#xff0c;但屏幕黑屏、ADB连不上、串口无输出。你以为它“变砖”了&#…

作者头像 李华
网站建设 2026/6/11 12:37:16

WE Learn平台高效学习解决方案:5大核心功能深度解析

WE Learn平台高效学习解决方案&#xff1a;5大核心功能深度解析 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案&#xff1b;支持班级测试&#xff1b;自动答题&#xff1b;刷时长&#xff1b;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gitcode.com/…

作者头像 李华
网站建设 2026/6/12 12:26:30

RePKG工具全面解析:轻松解锁Wallpaper Engine壁纸资源

RePKG作为一款专业的Wallpaper Engine资源处理工具&#xff0c;能够高效解包PKG格式文件并自动转换TEX纹理为常见图片格式。无论你是壁纸创作者还是技术爱好者&#xff0c;这款工具都能帮你深度挖掘壁纸资源的价值。 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX…

作者头像 李华