Sha256: a58fa3d7184f4a7c4dd56c43535152bfe553e85deab7729f86c04d05ed57f899

Contents?: true

Size: 1.69 KB

Versions: 7

Compression:

Stored size: 1.69 KB

Contents

# = Treemap
# Introduced by Ben Shneiderman in 1991, a treemap recursively subdivides area into rectangles. As with adjacency diagrams, the size of any node in the tree is quickly revealed. This example uses color to encode different packages of the rubyvis package, and area to encode file size. “Squarified” treemaps use approximately square rectangles, which offer better readability and size estimation than naive “slice-and-dice” subdivision. 
# Fancier algorithms such as "Voronoi":http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.102.6281&rep=rep1&type=pdf and "jigsaw":http://www.research.ibm.com/visual/papers/158-wattenberg-final3.pdf treemaps also exist but are less common.

$:.unshift(File.dirname(__FILE__)+"/../../lib")
require 'rubyvis'

def get_files(path)
  h={}
  Dir.glob("#{path}/*").each {|e|
    next if File.expand_path(e)=~/pkg|web|vendor|doc|~/
    pa=File.expand_path(e) 
    if File.stat(pa).directory?
      h[File.basename(pa)]=get_files(pa)
    else
      h[File.basename(pa)]=File.stat(pa).size
    end
  }
  h
end

files=get_files(File.expand_path(File.dirname(__FILE__)+"/../../lib/"))

format=Rubyvis::Format.number
color = pv.Colors.category20
nodes = pv.dom(files).root("rubyvis").nodes


vis = pv.Panel.new()
    .width(600)
    .height(1000)

treemap = vis.add(Rubyvis::Layout::Treemap).
  nodes(nodes).mode("squarify").round(true)

treemap.leaf.add(Rubyvis::Panel).
  fill_style(lambda{|d| 
   color.scale(d.parent_node.node_name)}).
  stroke_style("#fff").
  line_width(1).
  antialias(false).
  title(lambda {|d| d.node_name+" "+format.format(d.node_value)})

treemap.node_label.add(Rubyvis::Label).
  text_style(lambda {|d| pv.rgb(0, 0, 0, 1)})

vis.render
puts vis.to_svg

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rubyvis-0.7.0 examples/5_pv_hierarchies/treemap.rb
rubyvis-0.6.1 examples/5_pv_hierarchies/treemap.rb
rubyvis-0.6.0 examples/5_pv_hierarchies/treemap.rb
rubyvis-0.5.2 examples/5_pv_hierarchies/treemap.rb
rubyvis-0.5.1 examples/5_pv_hierarchies/treemap.rb
rubyvis-0.5.0 examples/5_pv_hierarchies/treemap.rb
rubyvis-0.4.1 examples/5_pv_hierarchies/treemap.rb