Skip to content

Instantly share code, notes, and snippets.

@thraxil
Created March 22, 2011 18:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thraxil/881707 to your computer and use it in GitHub Desktop.
Save thraxil/881707 to your computer and use it in GitHub Desktop.
logarithmic scaling of tag clouds
#!/usr/bin/env python
import math
tags = [('admin', 1), ('annotation', 1), ('annotations', 6), ('apache', 1),
('authentication', 2), ('backend', 27), ('caching', 1), ('cgi_app', 1),
('cherrypy', 1), ('cherrypy-branch', 2), ('client', 3), ('cookies', 1),
('CSS', 2), ('dependencies', 4), ('documentation', 8), ('email', 8),
('exif', 1), ('fields', 4), ('flash', 2), ('forum', 3), ('fozzy', 1),
('frink', 1), ('groups', 3), ('HTML', 2), ('items', 29),
('javascript', 2), ('keywords', 7), ('lifecycle', 6), ('linking', 1),
('meta', 1), ('metadata', 3), ('milestones', 8), ('mod_perl', 1),
('mod_python', 1), ('mysql', 1), ('navigation', 1), ('notification', 2),
('numbers', 1), ('paths', 5), ('permissions', 2), ('polish', 4),
('priority', 2), ('project', 17), ('publish', 1), ('python', 2),
('regexp', 1), ('related', 1), ('REST', 2), ('rotation', 1),
('search', 5), ('security', 3), ('selenium', 1), ('slideshow', 3),
('sporadic', 1), ('stickies', 1), ('svg', 1), ('sysadmin', 1),
('tagging', 4), ('tasty', 1), ('templates', 2), ('test', 2),
('testing', 1), ('tests', 1), ('tiki', 1), ('tiki regexp', 1),
('tutorial', 1), ('unicode', 2), ('usability', 3), ('user', 10),
('video', 2), ('wiki', 1), ('wind', 1), ('windows', 2), ('xml-rpc', 1),
('xmlrpc', 2)]
levels = 5
def ex_weights(l): return [int(w) for (t,w) in l]
max_weight = max(ex_weights(tags))
min_weight = min(ex_weights(tags))
thresholds = [math.pow(max_weight - min_weight + 1,float(i) / float(levels))
for i in range(0,levels)]
def class_from_weight(w,thresholds):
i = 0
for t in thresholds:
i += 1
if w <= t:
return i
return i
for (t,w) in tags:
c = class_from_weight(w,thresholds)
print "<span class='cloud-level%d'>%s</span> | " % (c,t)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment