Plot diagrams fit with euler() and venn() using grid::Grid() graphics. This function sets up all the necessary plot parameters and computes the geometry of the diagram. plot.eulergram(), meanwhile, does the actual plotting of the diagram. Please see the Details section to learn about the individual settings for each argument.

# S3 method for euler
plot(
  x,
  fills = TRUE,
  edges = TRUE,
  legend = FALSE,
  labels = identical(legend, FALSE),
  quantities = FALSE,
  strips = NULL,
  main = NULL,
  n = 200L,
  adjust_labels = TRUE,
  ...
)

# S3 method for venn
plot(
  x,
  fills = TRUE,
  edges = TRUE,
  legend = FALSE,
  labels = identical(legend, FALSE),
  quantities = TRUE,
  strips = NULL,
  main = NULL,
  n = 200L,
  adjust_labels = TRUE,
  ...
)

Arguments

x

an object of class 'euler', generated from euler()

fills

a logical, vector, or list of graphical parameters for the fills in the diagram. Vectors are assumed to be colors for the fills. See grid::grid.path().

edges

a logical, vector, or list of graphical parameters for the edges in the diagram. Vectors are assumed to be colors for the edges. See grid::grid.polyline().

legend

a logical scalar or list. If a list, the item side can be used to set the location of the legend. See grid::grid.legend().

labels

a logical, vector, or list. Vectors are assumed to be text for the labels. See grid::grid.text().

quantities

a logical, vector, or list. Vectors are assumed to be text for the quantities' labels, which by default are the original values in the input to euler(). In addition to arguments that apply to grid::grid.text(), an argument type may also be used which should be a combination of "counts" and "percent". The first item will be printed first and the second will be printed thereafter inside brackets. The default is type = "counts".

strips

a list, ignored unless the 'by' argument was used in euler()

main

a title for the plot in the form of a character, expression, list or something that can be sensibly converted to a label via grDevices::as.graphicsAnnot(). A list of length one can be provided, in which case its only element is used as the label. If a list of longer length is provided, an item named 'label' must be provided (and will be used for the actual text).

n

number of vertices for the edges and fills

adjust_labels

a logical. If TRUE, adjustment will be made to avoid overlaps or out-of-limits plotting of labels, quantities, and percentages.

...

parameters to update fills and edges with and thereby a shortcut to set these parameters grid::grid.text().

Value

Provides an object of class 'eulergram' , which is a description of the diagram to be drawn. plot.eulergram() does the actual drawing of the diagram.

Details

The only difference between plot.euler() and plot.venn() is that quantities is set to TRUE by default in the latter and FALSE in the former.

Most of the arguments to this function accept either a logical, a vector, or a list where

  • logical values set the attribute on or off,

  • vectors are shortcuts to commonly used options (see the individual parameters), and

  • lists enable fine-grained control, including graphical parameters as described in grid::gpar() and control arguments that are specific to each argument.

The various grid::gpar() values that are available for each argument are:

fillsedgeslabelsquantitiesstripslegendmaincol
xxxxxxfillx
alphaxxxxx
xxltyx
lwdxlex
xfontsizex
xxxxcexxxx
xxfontfamilyxxxxx
lineheightxxxxxfont

Defaults for these values, as well as other parameters of the plots, can be set globally using eulerr_options().

If the diagram has been fit using the data.frame or matrix methods and using the by argument, the plot area will be split into panels for each combination of the one to two factors.

For users who are looking to plot their diagram using another package, all the necessary parameters can be collected if the result of this function is assigned to a variable (rather than printed to screen).

Examples

fit <- euler(c("A" = 10, "B" = 5, "A&B" = 3))

# Customize colors, remove borders, bump alpha, color labels white
plot(fit,
     fills = list(fill = c("red", "steelblue4"), alpha = 0.5),
     labels = list(col = "white", font = 4))


# Add quantities to the plot
plot(fit, quantities = TRUE)


# Add a custom legend and retain quantities
plot(fit, quantities = TRUE, legend = list(labels = c("foo", "bar")))


# Plot without fills and distinguish sets with border types instead
plot(fit, fills = "transparent", lty = 1:2)


# Save plot parameters to plot using some other method
diagram_description <- plot(fit)

# Plots using 'by' argument
plot(euler(fruits[, 1:4], by = list(sex)), legend = TRUE)