The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.

Tutorial: Using ggVennDiagram

‘ggVennDiagram’ enables fancy Venn plot with 2-7 sets and generates publication quality figure.

Installation

You can install the released version of ggVennDiagram from CRAN with:

install.packages("ggVennDiagram")

And the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("gaospecial/ggVennDiagram")

Usage

Generate example data.

genes <- paste0("gene",1:1000)
set.seed(20210302)
gene_list <- list(A = sample(genes,100),
                  B = sample(genes,200),
                  C = sample(genes,300),
                  D = sample(genes,200))

library(ggVennDiagram)
library(ggplot2)

long category names

If you use long category names in Venn plot, labels may be cropped by plot borders. To avoid this, just use a ggplot trick to expand x axis.

p1 <- ggVennDiagram(gene_list, 
                    category.names = c("a very long name","short name","name","another name"))
p1


# expand axis to show long set labels
p1 + scale_x_continuous(expand = expansion(mult = .2))

Show intersection values

When intersection values only have several members, ggVennDiagram is efficient to show the values in places.

set.seed(0)
small_list <- lapply(sample(6:10, size = 4), function(x){
  sample(letters,x)
})

ggVennDiagram(small_list, 
              category.names = LETTERS[1:4], 
              show_intersect = TRUE)
#> Warning in geom_text(aes(label = .data$count, text = .data$item), data =
#> region_label): Ignoring unknown aesthetics: text

Setting set label

color of set label

ggVennDiagram(gene_list, set_color = c("blue","black","red","yellow"))

size of set labels

ggVennDiagram(gene_list, set_size = 8)

Setting region label

text content

ggVennDiagram(gene_list, label = "count")
ggVennDiagram(gene_list, label = "percent")
ggVennDiagram(gene_list, label = "both")
ggVennDiagram(gene_list, label = "none")

percentage digits

ggVennDiagram(gene_list, label_percent_digit = 1, label = "percent")

remove label background

ggVennDiagram(gene_list, label_alpha = 0)

ggVennDiagram(gene_list, label_geom = "text")

color and size

ggVennDiagram(gene_list, label_color = "firebrick", label_size = 4)

Setting set edges

ggVennDiagram(gene_list, edge_lty = "dashed", edge_size = 1)

Changing palette

library(ggplot2)
p <- ggVennDiagram(gene_list)

# Red Blue
p + scale_fill_distiller(palette = "RdBu")


# Reds
p + scale_fill_distiller(palette = "Reds", direction = 1)

Some other palletes are:

RColorBrewer::display.brewer.all()

Adding note

p + labs(title = "Fancy Venn Diagram of four sets",
         subtitle = "Generated by `ggVennDiagram`",
         caption = Sys.Date())

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.
Health stats visible at Monitor.