Search code examples
pythonrvenn-diagram

how to draw Venn Diagram using 6 sets


I have a dataset with 6 elements.

An I would like to draw a venn diagram, but with R (Venndiagram library) it's limited at 5 elements.

Do you know how can draw a 6-sets venn diagram ? Maybe with python?

Example of my data :

Ath,Fve,Mdm,Pcmm,Pper,Pmum,Counts
1,0,0,0,0,0,901
0,1,0,0,0,0,14764
0,0,1,0,0,0,19408
0,0,0,1,0,0,17714
0,0,0,0,1,0,16849
0,0,0,0,0,1,17572
1,1,0,0,0,0,823
1,0,1,0,0,0,846
...

Solution

  • I wrote a javascript library a while back that can do this: venn.js . It produces this output on the dataset you gave:

    Output on your data

    Its in javascript, but Kent Russell has provided a htmlwidgets interface to call it from R.

    Code to produce this is:

    // define set sizes and their intersection sizes
    var sets = [
        {sets: ['Ath'], size: 901},
        {sets: ['Fve'], size: 14764},
        {sets: ['Mdm'], size: 19408},
        {sets: ['Pcmm'], size: 17714},
        {sets: ['Pper'], size: 16948},
        {sets: ['Pmum'], size: 17572},
        {sets: ['Ath', 'Fve'], size: 823},
        {sets: ['Ath', 'Mdm'], size: 846},
    
        // need to specfiy the rest of the sets don't overlap
        {sets: ['Ath', 'Pcmm'], size: 0},
        {sets: ['Ath', 'Pper'], size: 0},
        {sets: ['Ath', 'Pmum'], size: 0},
        {sets: ['Fve', 'Mdm'], size: 0},
        {sets: ['Fve', 'Pcmm'], size: 0},
        {sets: ['Fve', 'Pper'], size: 0},
        {sets: ['Fve', 'Pmum'], size: 0},
        {sets: ['Mdm', 'Pcmm'], size: 0},
        {sets: ['Mdm', 'Pper'], size: 0},
        {sets: ['Mdm', 'Pmum'], size: 0},
        {sets: ['Pcmm', 'Pper'], size: 0},
        {sets: ['Pcmm', 'Pmum'], size: 0},
        {sets: ['Pper', 'Pmum'], size: 0},
        ];
    
    // draw the chart in the venn div
    var chart = venn.VennDiagram();
    d3.select("#venn").datum(sets).call(chart);