Mercurial > sypikslang
annotate gamelib/visualize.py @ 101:e92035dce1f6
pep8hg pushhg push
author | Rizmari Versfeld <rizziepit@gmail.com> |
---|---|
date | Wed, 09 May 2012 22:11:52 +0200 |
parents | b27b4dede626 |
children | 80fa87ac505e |
rev | line source |
---|---|
100
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
1 import networkx |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
2 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
3 import matplotlib.pyplot as plt |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
4 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
5 import pylab |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
6 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
7 from gamelib import research |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
8 from gamelib import schematics |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
9 from gamelib.lab import Lab |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
10 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
11 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
12 def construct_research_tree(lab): |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
13 rt = networkx.DiGraph() |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
14 for research in lab.new_research: |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
15 rt.add_node(research, label=research.NAME, color='green') |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
16 for research in lab.new_research: |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
17 for prereq in research.PREREQUISITES: |
101 | 18 rt.add_edge(prereq[0], research, weight=1.0 / prereq[1], \ |
100
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
19 label=prereq[1], color='green') |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
20 for schematic in lab.new_schematics: |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
21 rt.add_node(schematic, label=schematic.NAME, color='red') |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
22 for schematic in lab.new_schematics: |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
23 for prereq in schematic.PREREQUISITES: |
101 | 24 rt.add_edge(prereq[0], schematic, weight=1.0 / prereq[1], \ |
100
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
25 label=prereq[1], color='red', size=schematic.COST/10) |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
26 return rt |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
27 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
28 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
29 def draw(rt): |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
30 agraph = networkx.to_agraph(rt) |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
31 agraph.graph_attr['label'] = 'Research Tree' |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
32 #agraph.layout(prog='dot') |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
33 agraph.write('research_tree.dot') |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
34 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
35 |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
36 def main(): |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
37 lab = Lab({'science':{}}) |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
38 research_tree = construct_research_tree(lab) |
b27b4dede626
added visualization for research tree
Rizmari Versfeld <rizziepit@gmail.com>
parents:
diff
changeset
|
39 draw(research_tree) |