zoukankan      html  css  js  c++  java
  • 曼哈顿图绘制-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
  • 相关阅读:
    (Java实现) 有重复元素排列问题
    玩转Google开源C++单元测试框架Google Test系列(转载)
    C++11之后,对源代码增加了UTF8和UCS4的支持(Windows内部使用Unicode,因为nt内核用的是ucs2,那是89年,utf8到了92年才发明出来)
    当年写的俄罗斯方块(现在更喜欢研究别人的代码)
    Stack的三种含义(数据超过栈的大小,就发生stack overflow)
    64位平台C/C++开发注意事项(转载)
    Redis集群方案
    Hadoop处理大量小文件的问题和解决方法
    Lazy Scheduler
    Solr与MongoDB集成,实时增量索引
  • 原文地址:https://www.cnblogs.com/xiaosagege/p/15213649.html
Copyright © 2011-2022 走看看