Skip to content

Instantly share code, notes, and snippets.

@trinker
Created February 13, 2019 15:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trinker/c642c8e87042b563f9e98833e66b3023 to your computer and use it in GitHub Desktop.
Save trinker/c642c8e87042b563f9e98833e66b3023 to your computer and use it in GitHub Desktop.
Euler Plot Demo
pacman::p_load(venneuler, tidyverse, ggforce)
## Make some fake data
set.seed(10)
dat <- data.frame(
Person = paste0('Person_', 1:10),
setNames(as.data.frame(matrix(rbinom(50, size = 1, prob=c(1/(1:5))), ncol = 5)), paste0('Attribute_', 1:5)),
stringsAsFactors = FALSE
)
## Coocurence between people
X <- as.matrix(dat[2:6])
X %*% t(X)
cooc <-provideDimnames(X %*% t(X), base = list(dat$Person, dat$Person))
diag(cooc)
rowSums(dat[2:6])
## Coocurence between attributes
X2 <- t(as.matrix(dat[2:6]))
(cooc <-X2 %*% t(X2))
diag(cooc)
colSums(dat[2:6])
## Euler Plot
y <- venneuler(X2)
plot(y)
euler_dat <- data.frame(y$centers, diameters = y$diameters, labels = y$labels, stringsAsFactors = FALSE)
euler_dat %>%
mutate(r = diameters/2) %>%
ggplot() +
geom_circle(aes(x0 = x, y0 = y, r = r, fill=labels), alpha = .5) +
geom_text(aes(x = x, y = y, label = labels)) +
coord_fixed() +
theme_void()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment