【问题标题】:Join two graphs (one beside other) GWAS加入两个图(一个在另一个旁边)GWAS
【发布时间】:2018-12-17 09:58:35
【问题描述】:

我有这段代码可以生成 2 种不同类型的图表(曼哈顿图和 QQ 图)

# Set up the work directory in which all data is gonna be extracted
gwasResults2 = read.csv("DWStem.csv") #Change name of the file
library(qqman) #Run to create plots
library(cowplot)
library(extrafont)
library(grid)
library(cowplot)
library(gridExtra)
MH <- manhattan(gwasResults2, chr="CHR", bp="BP", snp="SNP", p="P", 
                     col = c("chartreuse2", "darkorange1", "gold1"),ylim=c(0,-log10(1e-06)), chrlabs = NULL,
                     suggestiveline = -log10(1e-03), genomewideline = -log10(1e-05),
                     highlight = NULL, logp = TRUE, annotatePval = NULL,
                     annotateTop = TRUE, main='DWStem')
QQ <- qq(gwasResults2$P, main='DWStem', pch = 24, cex=1, col="gold", bg="brown1", lwd=1, xlim=c(0,5), ylim=c(0,5)) #Run to create qqplot $P need to be there!

Total <- plot_grid(MH, QQ, labels = c("a", "b"), ncol = 2)

但显然我不能把它们放在一边,因为我得到了下一个错误:

plot_to_gtable(x) 中的错误: 参数必须属于“ggplot”、“gtable”、“grob”、“recordedplot”类,或在调用时绘制到 R 图形设备的函数,但它是一个列表

知道如何解决它吗? 先谢谢了! :D

【问题讨论】:

    标签: r ggplot2 plot datagrid


    【解决方案1】:

    函数manhattanqq 生成基本图形,而不是网格图形。您需要使用基本图形方法进行布局。例如,使用可重现的数据,

    par(mfrow=c(1,2))
    manhattan(gwasResults, main = "a")
    qq(gwasResults$P, main = "b")
    

    生产

    如果您的绘图使用网格图形(由gridggplot2lattice 生成),那么您的方法会奏效。如果有的使用网格,有的使用基本图形,可以将它们混合在同一个显示中,但这并不容易。请参阅 gridBasegridGraphics 包。

    编辑添加:

    如果您安装了gridGraphics,那么将基本图形与网格图形混合起来实际上还不错。您只需将 MHQQ 设置为生成图形的函数,而不是图形本身。例如,

    MH <- function() { manhattan(gwasResults) }
    QQ <- function() { qq(gwasResults$P) }
    Total <- plot_grid(MH, QQ, labels = c("a", "b"), ncol = 2)
    

    当您打印Total 时,您会得到:

    这些图表已经失去了它们的 y 轴标签,但看起来还不错。

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2022-01-28
      • 1970-01-01
      • 2022-06-12
      相关资源
      最近更新 更多