• 曼哈顿图绘制-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
  • 相关阅读:
    Elixir 简介
    docker 基础
    函数式和面向对象
    react-native 简介及环境
    Ecto 总结
    使用 dep 配置 golang 开发环境
    docker 私有仓库简易搭建
    Elixir 单元测试
    基于资源的权限系统-API设计
    差商代微商的方法求解一阶常微分方程
  • 原文地址:https://www.cnblogs.com/xiaosagege/p/15213649.html
Copyright © 2020-2023  润新知