带ggplot2的Karyogram和SNP(几何路径、几何条、ggbio)

带ggplot2的Karyogram和SNP(几何路径、几何条、ggbio),r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,我想用SNP标记绘制一个染色体组图。 它与函数段一起工作,但我想使用ggplot2软件包来显示优雅的图形。 ggbio: 我用函数layout\u karyogram检查了ggbio包,但染色体是在垂直位置绘制的。我没有找到一种方法来旋转每个染色体下面的图,并将我的SNP的名字写在它们的片段旁边 geom_-bar: 然后我尝试了ggplot2包中的geom_bar: 这个形状看起来很好。所以我试着运行几个染色体的代码 p我会选择geom\u段。SNP段的x开始/结束是硬编码的(as.

我想用SNP标记绘制一个染色体组图。
它与函数
段一起工作
,但我想使用ggplot2软件包来显示优雅的图形。


  • ggbio:
    我用函数
    layout\u karyogram
    检查了ggbio包,但染色体是在垂直位置绘制的。我没有找到一种方法来旋转每个染色体下面的图,并将我的SNP的名字写在它们的片段旁边


  • geom_-bar

    然后我尝试了ggplot2包中的
    geom_bar
  • 这个形状看起来很好。所以我试着运行几个染色体的代码


    p我会选择
    geom\u段
    。SNP段的
    x
    开始/结束是硬编码的(
    as.integer(chr)-+0.05
    ),但在其他方面代码相当简单

    ggplot() +
      geom_segment(data = data,
                   aes(x = chr, xend = chr, y = 0, yend = size),
                   lineend = "round", color = "lightgrey", size = 5) +
      geom_segment(data = SNP,
                   aes(x = as.integer(chr) - 0.05, xend = as.integer(chr) + 0.05,
                       y = pos, yend = pos, color = type),
                   size = 1) +
      theme_minimal()
    


    数据
    
    ggplot() + geom_path(data=NULL, mapping=aes(x=c(1,1), y=c(1,100)),size=3, lineend="round")   
    
    p <- ggplot()
    data<-data.frame(chromosome=paste0("chr", 1:4),size=c(100,400,300,200),stringsAsFactors = FALSE)
    for (i in 1:length(data[,1])){
      p <- p + geom_path(data=NULL, mapping=aes(x=c(i,i), y=c(1,data[i,2])), size=3, lineend="round")
    }   
    
    ggplot() +
      geom_segment(data = data,
                   aes(x = chr, xend = chr, y = 0, yend = size),
                   lineend = "round", color = "lightgrey", size = 5) +
      geom_segment(data = SNP,
                   aes(x = as.integer(chr) - 0.05, xend = as.integer(chr) + 0.05,
                       y = pos, yend = pos, color = type),
                   size = 1) +
      theme_minimal()
    
    data <- data.frame(chr = paste0("chr", 1:4),
                       size = c(100, 400, 300, 200))
    
    SNP <- data.frame(chr = paste0("chr", c(1, 1, 2, 3, 3, 4)),
                      pos = c(50, 70, 250, 20, 290, 110),
                      type = c("A", "A", "A", "B", "B", "B"))