euler | R Documentation |
Fit Euler diagrams (a generalization of Venn diagrams) using numerical optimization to find exact or approximate solutions to a specification of set relationships. The shape of the diagram may be a circle or an ellipse.
euler(combinations, ...)
## Default S3 method:
euler(
combinations,
input = c("disjoint", "union"),
shape = c("circle", "ellipse"),
loss = c("square", "abs", "region"),
loss_aggregator = c("sum", "max"),
control = list(),
...
)
## S3 method for class 'data.frame'
euler(
combinations,
weights = NULL,
by = NULL,
sep = "_",
factor_names = TRUE,
...
)
## S3 method for class 'matrix'
euler(combinations, ...)
## S3 method for class 'table'
euler(combinations, ...)
## S3 method for class 'list'
euler(combinations, ...)
combinations |
set relationships as a named numeric vector, matrix, or data.frame (see methods (by class)) |
... |
arguments passed down to other methods |
input |
type of input: disjoint identities
( |
shape |
geometric shape used in the diagram |
loss |
type of loss to minimize over. If |
loss_aggregator |
how the final loss is computed. |
control |
a list of control parameters.
|
weights |
a numeric vector of weights of the same length as
the number of rows in |
by |
a factor or character matrix to be used in |
sep |
a character to use to separate the dummy-coded factors if there are factor or character vectors in 'combinations'. |
factor_names |
whether to include factor names when constructing dummy codes |
If the input is a matrix or data frame and argument by
is specified,
the function returns a list of euler diagrams.
The function minimizes the residual sums of squares,
\sum_{i=1}^n (A_i - \omega_i)^2,
by default, where \omega_i
the size of the ith disjoint subset, and
A_i
the corresponding area in the diagram, that is, the unique
contribution to the total area from this overlap. The loss function
can, however, be controlled via the loss
argument.
euler()
also returns stress
(from venneuler), as well as
diagError
, and regionError
from eulerAPE.
The stress statistic is computed as
\frac{\sum_{i=1}^n (A_i - \beta\omega_i)^2}{\sum_{i=1}^n A_i^2},
where
\beta = \sum_{i=1}^n A_i\omega_i / \sum_{i=1}^n \omega_i^2.
regionError
is computed as
\left| \frac{A_i}{\sum_{i=1}^n A_i} - \frac{\omega_i}{\sum_{i=1}^n \omega_i}\right|.
diagError
is simply the maximum of regionError.
A list object of class 'euler'
with the following parameters.
ellipses |
a matrix of |
original.values |
set relationships in the input |
fitted.values |
set relationships in the solution |
residuals |
residuals |
regionError |
the difference in percentage points between each disjoint subset in the input and the respective area in the output |
diagError |
the largest |
stress |
normalized residual sums of squares |
euler(default)
: a named numeric vector, with
combinations separated by an ampersand, for instance A&B = 10
.
Missing combinations are treated as being 0.
euler(data.frame)
: a data.frame
of logicals, binary integers, or
factors.
euler(matrix)
: a matrix that can be converted to a data.frame of logicals
(as in the description above) via base::as.data.frame.matrix()
.
euler(table)
: A table with max(dim(x)) < 3
.
euler(list)
: a list of vectors, each vector giving the contents of
that set (with no duplicates). Vectors in the list must be named.
Wilkinson L. Exact and Approximate Area-Proportional Circular Venn and Euler Diagrams. IEEE Transactions on Visualization and Computer Graphics (Internet). 2012 Feb (cited 2016 Apr 9);18(2):321-31. Available from: \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1109/TVCG.2011.56")}
Micallef L, Rodgers P. eulerAPE: Drawing Area-Proportional 3-Venn Diagrams Using Ellipses. PLOS ONE (Internet). 2014 Jul (cited 2016 Dec 10);9(7):e101717. Available from: \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1371/journal.pone.0101717")}
plot.euler()
, print.euler()
, eulerr_options()
, venn()
# Fit a diagram with circles
combo <- c(A = 2, B = 2, C = 2, "A&B" = 1, "A&C" = 1, "B&C" = 1)
fit1 <- euler(combo)
# Investigate the fit
fit1
# Refit using ellipses instead
fit2 <- euler(combo, shape = "ellipse")
# Investigate the fit again (which is now exact)
fit2
# Plot it
plot(fit2)
# A set with no perfect solution
euler(c(
"a" = 3491, "b" = 3409, "c" = 3503,
"a&b" = 120, "a&c" = 114, "b&c" = 132,
"a&b&c" = 50
))
# Using grouping via the 'by' argument through the data.frame method
euler(fruits, by = list(sex, age))
# Using the matrix method
euler(organisms)
# Using weights
euler(organisms, weights = c(10, 20, 5, 4, 8, 9, 2))
# The table method
euler(pain, factor_names = FALSE)
# A euler diagram from a list of sample spaces (the list method)
euler(plants[c("erigenia", "solanum", "cynodon")])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.