zoukankan      html  css  js  c++  java
  • R语言画韦恩图(Venn 文氏图、温氏图、范氏图)

    From https://blog.csdn.net/u011808596/article/details/80974250

    # 先安装各个包

    futile.logger - R中类似log4j的日志记录包. 官网:

    log4r - R中的log4j接口. 官网:

    logging - 一个在R中实现log4j的日志处理包. 官网:

     
     # install.packages("VennDiagram")
     library(grid)
     library(futile.logger)
     library(VennDiagram)

    ==============================================
    已知各个数据集的个数,并且交叉个数来制作韦恩图
    两个数据集:
     

    venn.plot <- draw.pairwise.venn(
      area1 = 100,  #区域1的数
      area2 = 70,   #区域2的数
      cross.area = 68,  #交叉数
      category = c("First", "Second"),#分类名称
      fill = c("blue", "red"),#区域填充颜色
      lty = "blank",  #区域边框线类型
      cex = 2,        #区域内部数字的字体大小
      cat.cex = 2,    #分类名称字体大小
      cat.pos = c(285, 105), #分类名称在圆的位置,默认正上方,通过角度进行调整
      cat.dist = 0.09,   #分类名称距离边的距离(可以为负数)
      cat.just = list(c(-1, -1), c(1, 1)),  #分类名称的位置
      ext.pos = 30,  #线的角度 默认是正上方12点位置
      ext.dist = -0.05,   #外部线的距离
      ext.length = 0.85,  #外部线长度
      ext.line.lwd = 2,  #外部线的宽度
      ext.line.lty = "dashed"   #外部线为虚线
    );
    grid.draw(venn.plot);

    三个数据集
    # A more complicated diagram
    venn.plot <- draw.triple.venn(
    area1 = 65,
    area2 = 75,
    area3 = 85,
    n12 = 35,
    n23 = 15,
    n13 = 25,
    n123 = 5,
    category = c("First", "Second", "Third"),
    fill = c("blue", "red", "green"),
    lty = "blank",
    cex = 2,
    cat.cex = 2,
    cat.col = c("blue", "red", "green")
    );
    grid.draw(venn.plot);#画图展示
    # Writing to file
    tiff(filename = "Triple_Venn_diagram.tiff", compression = "lzw");  #保存图片
    dev.off();

    四个数据集:
    # Reference four-set diagram
    venn.plot <- draw.quad.venn(
    area1 = 72,
    area2 = 86,
    area3 = 50,
    area4 = 52,
    n12 = 44,
    n13 = 27,
    n14 = 32,
    n23 = 38,
    n24 = 32,
    n34 = 20,
    n123 = 18,
    n124 = 17,
    n134 = 11,
    n234 = 13,
    n1234 = 6,
    category = c("First", "Second", "Third", "Fourth"),
    fill = c("orange", "red", "green", "blue"),
    lty = "dashed",
    cex = 2,
    cat.cex = 2,
    cat.col = c("orange", "red", "green", "blue")
    );
    grid.draw(venn.plot);#画图展示


    # Writing to file
    tiff(filename = "Quad_Venn_diagram.tiff", compression = "lzw");#保存图片
    dev.off();退出画图

    五个数据集:
    # Reference five-set diagram
    venn.plot1 <- draw.quintuple.venn(
    area1 = 301,
    area2 = 321,
    area3 = 311,
    area4 = 321,
    area5 = 301,
    n12 = 188,
    n13 = 191,
    n14 = 184,
    n15 = 177,
    n23 = 194,
    n24 = 197,
    n25 = 190,
    n34 = 190,
    n35 = 173,
    n45 = 186,
    n123 = 112,
    n124 = 108,
    n125 = 108,
    n134 = 111,
    n135 = 104,
    n145 = 104,
    n234 = 111,
    n235 = 107,
    n245 = 110,
    n345 = 100,
    n1234 = 61,
    n1235 = 60,
    n1245 = 59,
    n1345 = 58,
    n2345 = 57,
    n12345 = 31,
    category = c("A", "B", "C", "D", "E"),
    fill = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),
    cat.col = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),
    cat.cex = 2,
    margin = 0.05,
    cex = c(1.5, 1.5, 1.5, 1.5, 1.5, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8,
    1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 1, 1, 1, 1, 1.5),
    ind = TRUE
    );
    grid.draw(venn.plot);#画图展示

    ==============================================
    通过数据列表进行制作图:
    两个数据集:
    # a more elaborate two-set Venn diagram with title and subtitle
    venn.plot <- venn.diagram(
      x = list(
        "A" = 1:100,
        "B" = 96:140
      ),
      filename = "c:\Venn_22set_complex.tiff",
      col = "transparent",
      fill = c("red", "green"),
      cex = 2.5,
      cat.cex = 2.5,
      rotation.degree = 0,
      main = "Complex Venn Diagram",
      main.cex = 2,
      sub.cex = 1,
      alpha = 0.50
    );
    三个数据集:
    A <- sample(1:1000, 400, replace = FALSE);
    B <- sample(1:1000, 600, replace = FALSE);
    C <- sample(1:1000, 350, replace = FALSE);
    venn.plot <- venn.diagram(
      #数据列表
      x = list(
        A = A,
        B = B,
        C = C
      ),
      filename ="C:\1.tiff",    #保存路径
      height = 450, 
      width = 450,
      resolution =300, 
      #imagetype="png", 
      col = "transparent",      #指定图形的圆周边缘颜色  transparent 透明           
      fill = c("cornflowerblue", "green",  "darkorchid1"),  #填充颜色
      alpha = 0.50,                                      #透明度
      label.col = c("orange", "white", "darkorchid4", "white",
                    "white", "darkgreen", "white"),
      cex = 0.45,    #每个区域label名称的大小
      fontfamily = "serif",  #字体
      fontface = "bold",     #字体格式
      cat.col = c("darkblue", "darkgreen", "darkorchid4"),  #分类颜色 
      cat.cex = 0.45,      #每个分类名称大小
      cat.pos = c(100, 260, 0),        #
      cat.dist = c(0.07, 0.07, 0.05),    #
      cat.fontfamily = "serif",     #分类字体
      rotation.degree =180,        #旋转角度
      margin = 0.2               #在网格单元中给出图周围空白量的编号
    );
    可以不保存查看图片,但是效果不佳(命令如下,但是需要首先把filename设置为(filename=NULL))
    grid.draw(venn.plot);
    dev.off();

    四个数据集:
    #sample为抽样函数,首先指定抽样范围,然后制定抽样个数,最后指定是否允许同样的抽样值
    A <- sample(1:1000, 400, replace = FALSE);
    B <- sample(1:1000, 600, replace = FALSE);
    C <- sample(1:1000, 350, replace = FALSE);
    D <- sample(1:1000, 550, replace = FALSE);
    E <- sample(1:1000, 375, replace = FALSE);
    venn.plot <- venn.diagram(
    #数据列表
    x = list(
    A = A,
    D = D,
    B = B,
    C = C
    ),
    filename = "Venn_4set_pretty.tiff",    #保存路径
    col = "transparent",      #指定图形的圆周边缘颜色  transparent 透明           
    fill = c("cornflowerblue", "green", "yellow", "darkorchid1"),  #填充颜色
    alpha = 0.50,                                      #透明度
    label.col = c("orange", "white", "darkorchid4", "white",
    "white", "white", "white", "white", "darkblue", "white",
    "white", "white", "white", "darkgreen", "white"),
    cex = 1.5,    #每个区域label名称的大小
    fontfamily = "serif",  #字体
    fontface = "bold",     #字体格式
    cat.col = c("darkblue", "darkgreen", "orange", "darkorchid4"),  #分类颜色 
    cat.cex = 1.5,      #每个分类名称大小
    cat.pos = 0,        #
    cat.dist = 0.07,    #
    cat.fontfamily = "serif",     #分类字体
    rotation.degree = 270,        #旋转角度
    margin = 0.2               #在网格单元中给出图周围空白量的编号
    );

    五个数据集:
    A <- sample(1:1000, 400, replace = FALSE);
    B <- sample(1:1000, 600, replace = FALSE);
    C <- sample(1:1000, 350, replace = FALSE);
    D <- sample(1:1000, 550, replace = FALSE);
    E <- sample(1:1000, 375, replace = FALSE);
    venn.plot <- venn.diagram(
      x = list(
        A = A,
        B = B,
        C = C,
        D = D,
        E = E
      ),
      filename = "c:\Venn_5set_pretty.tiff",
      col = "black",
      fill = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),
      alpha = 0.50,
      cex = c(1.5, 1.5, 1.5, 1.5, 1.5, 1, 0.8, 1, 0.8, 1, 0.8, 1, 0.8,
              1, 0.8, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 0.55, 1, 1, 1, 1, 1, 1.5),
      cat.col = c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3"),
      cat.cex = 1.5,
      cat.fontface = "bold",
      margin = 0.05
    );

     

    ==============================================

     画文氏图:

    https://www.cnblogs.com/emanlee/p/3931831.html

  • 相关阅读:
    2、容器初探
    3、二叉树:先序,中序,后序循环遍历详解
    Hebbian Learning Rule
    论文笔记 Weakly-Supervised Spatial Context Networks
    在Caffe添加Python layer详细步骤
    论文笔记 Learning to Compare Image Patches via Convolutional Neural Networks
    Deconvolution 反卷积理解
    论文笔记 Feature Pyramid Networks for Object Detection
    Caffe2 初识
    论文笔记 Densely Connected Convolutional Networks
  • 原文地址:https://www.cnblogs.com/emanlee/p/13967370.html
Copyright © 2011-2022 走看看