The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
ggVennDiagram
has a series of set operation functions,
and this can be used as the Venn calculator.
library(ggVennDiagram)
set.seed(20231225)
y = list(
A = sample(letters, 8) |> sort(),
B = sample(letters, 8) |> sort(),
C = sample(letters, 8) |> sort(),
D = sample(letters, 8) |> sort())
y
#> $A
#> [1] "a" "e" "g" "o" "p" "s" "t" "v"
#>
#> $B
#> [1] "a" "d" "f" "i" "k" "s" "y" "z"
#>
#> $C
#> [1] "b" "g" "k" "o" "r" "s" "u" "w"
#>
#> $D
#> [1] "b" "c" "e" "h" "k" "q" "s" "y"
First of all, we need to construct a Venn
class object
with this list. If you print this object, it will give meta information
of the object.
venn_y = Venn(y)
venn_y
#> An object of class 'Venn':
#> Slots: sets, names;
#> No. Sets: 4 SetNames: A, B, C, D.
Find the overlapping members of two or more sets.
Find the different members between sets and set unions
Find the specific members in one or more sets
Find the union of two or more sets
unite(venn_y, 1:2) # union of set 1 and 2
#> [1] "a" "e" "g" "o" "p" "s" "t" "v" "d" "f" "i" "k" "y" "z"
unite(venn_y, "all") # union of all four sets
#> [1] "a" "e" "g" "o" "p" "s" "t" "v" "d" "f" "i" "k" "y" "z" "b" "r" "u" "w" "c"
#> [20] "h" "q"
unite(venn_y, c("A", "B", "C"))
#> [1] "a" "e" "g" "o" "p" "s" "t" "v" "d" "f" "i" "k" "y" "z" "b" "r" "u" "w"
Combined results were provided as VennPlotData object.
pd = process_data(venn_y)
pd
#> Class VennPlotData - '401f'
#> Type: ellipse; No. sets: 4; No. regions: 15.
#> To view this shape, use `plot_shape_edge(get_shape_by_id('401f'))`.
#> To view its components, use `venn_setedge()`, `venn_setlabel()`, etc.
venn_set()
: get set data from the object.
venn_region()
: get subsets data from the object.
venn_region(pd)
#> # A tibble: 15 × 4
#> id name item count
#> <chr> <chr> <list> <int>
#> 1 1 A <chr [3]> 3
#> 2 2 B <chr [4]> 4
#> 3 3 C <chr [3]> 3
#> 4 4 D <chr [3]> 3
#> 5 1/2 A/B <chr [1]> 1
#> 6 1/3 A/C <chr [2]> 2
#> 7 1/4 A/D <chr [1]> 1
#> 8 2/3 B/C <chr [0]> 0
#> 9 2/4 B/D <chr [1]> 1
#> 10 3/4 C/D <chr [1]> 1
#> 11 1/2/3 A/B/C <chr [0]> 0
#> 12 1/2/4 A/B/D <chr [0]> 0
#> 13 1/3/4 A/C/D <chr [0]> 0
#> 14 2/3/4 B/C/D <chr [1]> 1
#> 15 1/2/3/4 A/B/C/D <chr [1]> 1
Please note in order to keep the result concise, the containing items are nested. You may use the following methods to further process it.
Method 1
Method 2
venn_region(pd) |> dplyr::rowwise() |> dplyr::mutate(item = paste0(item, collapse = ", "))
#> # A tibble: 15 × 4
#> # Rowwise:
#> id name item count
#> <chr> <chr> <chr> <int>
#> 1 1 A "p, t, v" 3
#> 2 2 B "d, f, i, z" 4
#> 3 3 C "r, u, w" 3
#> 4 4 D "c, h, q" 3
#> 5 1/2 A/B "a" 1
#> 6 1/3 A/C "g, o" 2
#> 7 1/4 A/D "e" 1
#> 8 2/3 B/C "" 0
#> 9 2/4 B/D "y" 1
#> 10 3/4 C/D "b" 1
#> 11 1/2/3 A/B/C "" 0
#> 12 1/2/4 A/B/D "" 0
#> 13 1/3/4 A/C/D "" 0
#> 14 2/3/4 B/C/D "k" 1
#> 15 1/2/3/4 A/B/C/D "s" 1
Some of these above-mentioned functions are originally developed by
Turgut Yigit Akyol in RVenn
.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.