Monday, January 19, 2009

Venn Diagrams with google charts

I recently had the need to view some data sets as venn diagrams, so I found google's chart api and hacked out a little AJAX application to do so, you can try it out here. And, for the fun of it, a VERY simple Python implementation:

import urllib
from PIL import Image
import StringIO

def venn_diagram_url(a, b, c, width=400, height=200):
values = [width, height, len(a), len(b), len(c)]
values.append(len(a & b))
values.append(len(a & c))
values.append(len(c & b))
values.append(len(a & b & c))
base_str = ''
args_str = 'cht=v&chs=%sx%s&chd=t:%s,%s,%s,%s,%s,%s,%s'
return base_str + (args_str % tuple(values))

a = set((1, 2, 3))
b = set((2, 4))
c = set((3, 4, 5))

data = StringIO.StringIO(urllib.urlopen(venn_diagram_url(a, b, c)).read())

Not much to it... But maybe someone will find it useful.


Eric.Le.Bigot said...

Thanks for sharing this! I did not yet know about Google's API...

Milan said...

did you figure out how to have more/less than 3 sets?

Kaleb Hornsby said...


To have 2 sets, make the 3rd number 0. You cannot have more than 3 sets, sadly.