git-svn-id: http://igraph.rubyforge.org/svn/trunk@53 71f48855-0bbf-4aa5-930d-4df415e86613
This commit is contained in:
parent
9ddff70fc1
commit
1310cb9fd6
|
@ -0,0 +1,61 @@
|
|||
require 'igraph'
|
||||
require 'cairo'
|
||||
|
||||
g = IGraph.barabasi_game(100,3,false,false)
|
||||
|
||||
vertices = g.to_a
|
||||
layout = g.send(ARGV.shift.to_sym,*ARGV.map{|a| eval(a)}).to_a
|
||||
|
||||
format = Cairo::FORMAT_ARGB32
|
||||
width = 1000
|
||||
height = 1000
|
||||
|
||||
surface = Cairo::ImageSurface.new(format, width, height)
|
||||
cr = Cairo::Context.new(surface)
|
||||
|
||||
# fill background with white
|
||||
cr.set_source_rgba(1.0, 1.0, 1.0, 0.8)
|
||||
cr.paint
|
||||
|
||||
max_x = layout.map{|a| a[0]}.max
|
||||
min_x = layout.map{|a| a[0]}.min
|
||||
max_y = layout.map{|a| a[1]}.max
|
||||
min_y = layout.map{|a| a[1]}.min
|
||||
|
||||
x_var = max_x - min_x
|
||||
y_var = max_y - min_y
|
||||
|
||||
max_var = [x_var,y_var].max
|
||||
|
||||
layout.each_with_index do |a,i|
|
||||
x,y = *a
|
||||
|
||||
x = (x - min_x)/max_var
|
||||
y = (y - min_y)/max_var
|
||||
x *= (width)
|
||||
y *= (height)
|
||||
|
||||
layout[i] = [x,y]
|
||||
|
||||
puts "#{x} #{y}"
|
||||
|
||||
end
|
||||
|
||||
layout.each_with_index do |a,i|
|
||||
|
||||
v = vertices[i]
|
||||
x,y = *a
|
||||
|
||||
cr.set_source_rgba(rand,rand,rand,0.5)
|
||||
cr.circle(x,y,1).fill
|
||||
|
||||
g.adjacent_vertices(v,IGraph::OUT).each do |w|
|
||||
cr.move_to(x,y)
|
||||
wx,wy = *layout[vertices.index(w)]
|
||||
cr.line_to(wx,wy)
|
||||
cr.stroke
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
cr.target.write_to_png("test.png")
|
Loading…
Reference in New Issue