美文网首页
R语言绘制Venn图的细节

R语言绘制Venn图的细节

作者: CrimsonUMO | 来源:发表于2022-11-19 17:02 被阅读0次

    R语言绘制Venn图比较方便,但是有很多细节需要注意,不然特别容易报错。

    基本的语法和参数

    VennDiagram::venn.diagram(
      x = venn,filename = NULL,
      #filename = "./figure_final/tif/Venn.tiff",
      resolution = 300,
      disable.logging = FALSE, 
      col = NA,
      fill = palette, 
      cat.col = palette, 
      cat.cex = 1, 
      cat.dist = -0.15, 
      rotation.degree = 0, main.cex = 1, 
      cex = 1, alpha = 0.5, reverse = TRUE
    )
    

    x是输入数据
    filename可选,如果filename填了文件路径的话就直接输出一个图片文件,如果filename填NULL的话就可以赋值给一个变量,后面再输出。
    fill和cat.col的数量应当与x的元素数量保持一致

    细节一

    输入数据(也就是x)应当是一个list。而且list的名字不能缺,必须为这个list的每个元素命名。

    names(venn) <- c("TCGA-Up","TCGA-Down","CON-Up","CON-Down")
    

    如果没有名字的话,作图的时候会报错:

    Error in VennDiagram::draw.quad.venn(area1 = length(A), area2 = length(B),  : 
      Unexpected parameter length for "category"
    

    细节二

    想输出PDF文件的话,不能直接print。我们可以看一下venn.diagram输出的是什么类型的对象

    > p <- VennDiagram::venn.diagram(
    +   x = venn,filename = NULL,
    +   #filename = "./figure_final/tif/Venn.tiff",
    +   resolution = 300,
    +   disable.logging = FALSE, 
    +   col = NA,
    +   fill = palette, 
    +   cat.col = palette, 
    +   cat.cex = 1, 
    +   cat.dist = -0.15, 
    +   rotation.degree = 0, main.cex = 1, 
    +   cex = 1, alpha = 0.5, reverse = TRUE
    + )
    > class(p)
    [1] "gList"
    

    如果直接输出这个p的话,会变成这样:

    > print(p)
    (polygon[GRID.polygon.1313], polygon[GRID.polygon.1314], polygon[GRID.polygon.1315], polygon[GRID.polygon.1316], polygon[GRID.polygon.1317], polygon[GRID.polygon.1318], polygon[GRID.polygon.1319], polygon[GRID.polygon.1320], text[GRID.text.1321], text[GRID.text.1322], text[GRID.text.1323], text[GRID.text.1324], text[GRID.text.1325], text[GRID.text.1326], text[GRID.text.1327], text[GRID.text.1328], text[GRID.text.1329], text[GRID.text.1330], text[GRID.text.1331], text[GRID.text.1332], text[GRID.text.1333], text[GRID.text.1334], text[GRID.text.1335], text[GRID.text.1336], text[GRID.text.1337], text[GRID.text.1338], text[GRID.text.1339]) 
    

    所以在输出成PDF之前,需要先转换一下对象的类型:

    > p = ggplotify::as.ggplot(cowplot::as_grob(p))
    > class(p)
    [1] "gg"     "ggplot"
    

    这样就可以正常print并且输出到PDF里了。

    相关文章

      网友评论

          本文标题:R语言绘制Venn图的细节

          本文链接:https://www.haomeiwen.com/subject/nqwbxdtx.html