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