A good thought, Larry. I realize Venns are not as sexy as some. Do you have any example links from the conference (other otherwise) that would be good for showing the overlap of A,B,C or even more sets?
I saw this Biostar post on Venn diagrams for GO term overlap. And this tool could be modified to do something like I wish, but was wondering if there's a tool that can make nicely proportional Venn diagrams by entering just the number of elements in each set and intersection.
For instance circle A has 10 items, B has 10 items, A+B has 6 items. Drawing them proportionally would be nice, but not essential. Also nice, but not critical, would be something open source which could be integrated with a suite of Perl scripts.
P.S. not using any standard GO terms, gene IDs, etc. This is for CNVs. So elements would take the form of: chr1:100000-200000.
17 answers
Something quite interesting that I learned from the VizBi conference (workshop on visualizing biological data) last month concerns depicting relationships linearly vs by area. Humans can proportionally relate objects of different lengths. That is if A = 10 and B = 5, A looks exactly twice as long, and if A = 10 and B = 9.8, B looks shorter. If A and B are depicted by area, things get difficult to discern because perceived differences in area relate to one another not by the power of 1.0 but by 0.6-0.7. Thus, one loses the degree of difference between objects when using area.
Although Venn diagrams are popular and convenient, this information is something to keep in mind when trying to depict the relationships.
Added 27 Apr 2011: Try Hohli at charts.hohli.com. With Hohli, you can create a Venn diagram and customize its look and feel. One can specify a title, choose data points, and alter the background. Hohli also allows you to create other charts, including scatter plots and other line charts.
I'll offer you this link and the links therein: http://iphylo.blogspot.com/2011/03/some-vizbi-2011-links.html. No, I have nothing specific because I don't know how many data groupings you have and how many different overlaps. Hive plots (accessed from above link) might be a possibility. Or you could try overlapping lines, bending them as necessary to cover all overlaps.
Good point! Another option to consider is UpSetR: https://github.com/hms-dbmi/UpSetR
It's a very versatile tool with helpful vignettes.
The Google Chart API will do this.
Update - the Chart API has now been deprecated (bummer...)
That page doesn't show how I can get it to show the numbers of the overlaps too. Do you know if that is possible with Google Chart?
Chris, that is great. It scales the sizes of the Venns and even lets me specify the size overlap. The resulting HTML is great. Still need to play with the options, but I think this will do the job.
You could try Lucidchart - that's what I use for diagrams.
I can recommend Vennerable. It is quite flexible and will allow you to plot proportional Venn/Euler diagrams and define the set names (foo and bar below) and weights directly (bar only has 7 elements, their intersection has 9, and there are 12 unique elements in foo):
Venn(SetNames = c("foo", "bar"), Weight = c('00' = 0, '01' = 7, '11' = 8, '10' = 12))
If you want to stick with Perl, there is Venn::Chart, which I have never used though.
Thanks Laurent, I'm less familiar with R. The link above doesn't take me to Venn-Chart, but I gather this is it: http://search.cpan.org/~djibel/Venn-Chart-1.00/lib/Venn/Chart.pm
Sorry for the wrong url, I just updated it. Yes, your link is correct.
@Laurent I think in your example, it should be back ticks instead of single quotes.
@Samseet You can indeed use back ticks, but single quotes do work.
@Sameet You can indeed use back ticks, but single quotes do work.
If set A totally include set B, seems the weighted venn diagram not working?
Like others, I have started using The R VennDiagram package. I just presented on this at our local R user's group:
Powerpoint: Venn and Euler Diagrams in R
For 3-way proportional venns, you could also try this Euler Venn Applet or Vennmaster:
Not exactly sure if this is possible but it might be worth checking the following two references taken from Chen and Boutros BMC Bioinformatics 2011, 12:35 VennDiagram: a package for the generation of highly-customizable Venn and Euler diagrams in R:
Hulsen T, de Vlieg J, Alkema W: BioVenn - a web application for the comparison and visualization of biological lists using area-proportional Venn diagrams. BMC Genomics 2008, 9:488.
Kestler HA, Muller A, Kraus JM, Buchholz M, Gress TM, Liu H, Kane DW, Zeeberg BR, Weinstein JN: VennMaster: area-proportional Euler diagrams for functional GO analysis of microarrays. BMC Bioinfo 2008, 9:67.
Andreas
Interesting. In the discussion, the authors note: "During development of the VennDiagram package, it was discovered that it was impossible to draw accurate, scaled Venn diagrams with three sets using circles." Apparently this is only possible using elipses or polygons.
Yeah, I ran into that same realization a few years back when I was trying to draw a three-fold venn. In some cases, it's possible, but if you get out a pencil and paper, it's pretty easy to come up with cases that don't work. For example, A,B,C,ABC=5, AB,AC,BC=0
If A,B,C,ABC=5, then wouldn't AB,AC,BC also be 5?
Ian, thanks. I read the OpenHelix post. It's where I got the links above from. But again it's within Cytoscape and not proportional.
Thanks, Khader. Venny seems to be able to handle my data very well. While not proportional in size, like Chris's solution, it does give me numbers in each group by just pasting my CNV lists.
Hi!
I don't know if it's possible to integrate R code into a suite of Perl suite, but to generate proportional and colorful Venn diagrams I use a R package called VennDiagram. You can find it there: VennDiagram: a package for the generation of highly-customizable Venn and Euler diagrams in R
I think that the venneuler R package could do the trick.
library("venneuler")
vd <- venneuler(c(A=0.3, B=0.3, C=1.1, "A&B"=0.1, "A&C"=0.2, "B&C"=0.1 ,"A&B&C"=0.1))
plot(vd)
Depending on your needs, you can also have a look at the venn function in gplots package (not proportional but offers venn diagrams with up to 5 sets). You can get colors by slightly modifying the function.
#construct some fake gene names..
oneName <- function() paste(sample(LETTERS,5,replace=TRUE),collapse="")
geneNames <- replicate(1000, oneName())
GroupA <- sample(geneNames, 400, replace=FALSE)
GroupB <- sample(geneNames, 750, replace=FALSE)
GroupC <- sample(geneNames, 250, replace=FALSE)
GroupD <- sample(geneNames, 300, replace=FALSE)
input <-list(GroupA,GroupB,GroupC,GroupD)
venn(input)
You may also look at the ClueGO cytoscape plugin (which is intended to summarize the results obtained from any functional enrichment analysis). It offers very nice and meaningful outputs.
See also VennMaster.
That's a neat plot!
Very useful. Thank you!
This vector graphic sw could be helpful
It does not appear to create proportional Venn diagrams.
Try this for proportional Venn diagrams https://reneshbedre.github.io/blog/venn.html
This one is sort of new and gives perfectly proportional venn diagrams:
Using nVennR to generate and explore n-dimensional, quasi-proportional Venn diagrams
It can also calculate the common/unique members of different groups from a single list..
Log in to answer this question.

Um, Ballers? You have us confused with someone else ;-)
Um, Ballers? You have us confused with someone else. Also, please try to use sensible titles which indicate what the question is - I edited your original.
Ummm...right. Thanks for helping to clear things up.