#' Plots venn diagram from three samples
#'
#' @param a vector of names
#' @param b vector of names
#' @param c vector of names
#' @param names optional names vector
#'
#' @return
#' @export
#'
#' @importFrom eulerr euler
#'
#'
plot_venn3 <- function(a, b, c, names) {
if(!hasArg(a)) {
a <- getData()
}
if(!hasArg(b)) {
b <- getData()
}
if(!hasArg(c)) {
c <- getData()
}
if(ok("Would you like to add names?")) {
names <- c()
while(length(names) != 3) {
names <- strsplit(readline("Please indicate names divided by a semicolon (;): "), split = ";")[[1]]
}
}
else {
names <- c("A", "B", "C")
}
A <- length(setdiff(a, unique(c(b, c))))
B <- length(setdiff(b, unique(c(a, c))))
C <- length(setdiff(c, unique(c(a, b))))
AB <- length(setdiff(intersect(a, b), c))
BC <- length(setdiff(intersect(b, c), a))
AC <- length(setdiff(intersect(a, c), b))
ABC <- length(intersect(a, intersect(b, c)))
if(!hasArg(names)) {
print(plot(x = euler(c("A" = A, "B" = B, "C" = C, "A&B" = AB, "B&C" = BC, "A&C" = AC, "A&B&C" = ABC, "D" = 100)),
fills = list(fill = c("white", "white", "white"), alpha = 0),
edges = c("blue", "blue", "blue"),
quantities = list(type = "counts")))
}
else {
print(plot(x = euler(c("A" = A, "B" = B, "C" = C, "A&B" = AB, "B&C" = BC, "A&C" = AC, "A&B&C" = ABC, "D" = 100)),
fills = list(fill = c("white", "white", "white"), alpha = 0),
edges = c("blue", "blue", "blue"),
labels = names,
quantities = list(type = "counts")))
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.