曼哈頓圖繪制-qqman-CMplot-ggplot(強推)-多個性狀-區間放大-批量注釋(更改SNP名稱為基因名,或添加新列進行自定義注釋)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM