在 R 中绘制直方图和 UpSet 图

Plot a histogram together with an UpSet plot in R

我有一个看起来像这样的数据框,

  df <- data.frame(type=c("SNP","DEL","SNP","SNP"),geneA=c(1,1,1,0), geneB=c(0,0,1,1), geneC=c(1,0,0,1))

   type geneA geneB geneC
1  SNP     1     0     1
2  DEL     1     0     0
3  SNP     1     1     0
4  SNP     0     1     1

我想在 R 中绘制一个 UpSet 图来找到共同基因并且
我想在直方图中绘制类型(SNP 或 DEL)的分布。

到目前为止,这是我的代码

  upset(df, 
        attribute.plots = list(gridrows=50,
                           plots=list(list(plot=histogram,
                                           x="type"))))

这是我的错误,我无法解决

Error: StatBin requires a continuous x variable: the x variable is discrete.Perhaps you want stat="count"?

非常感谢任何帮助

我不确定 the distribution of types (SNP or DEL) in an histogram 的确切含义。但是,由于示例中的 SNP 和 DEL 数据是二进制数据,因此您可能希望在条形图中绘制 SNP 和 DEL 的计数。如果是这样,你可以这样试试:

mybarplot <- function(mydata, x) {
  (ggplot(mydata, aes_string(x = x)) + geom_bar()
  + theme(plot.margin = unit(c(0.5, 0.5, 0, 0), "cm"), 
          legend.key.size = unit(0.4, "cm")))
}

此函数将数据框及其列之一作为输入,并且 生成条形图作为其输出。然后,您在 upset 函数中调用此函数来生成条形图以及您的不安图。

upset(dftest, attribute.plots = list(gridrows = 50, 
                                     plots = list(list(plot = mybarplot, 
                                                       x = "type"))))