2017-03-16 8 views
0

grap-tool (Python 3.4)에 20 개의 방향성 그래프가 있고 모두가 동일한 노드 이름 ('name'이라는 속성)이지만 연결 및 속성이 다릅니다.graph-tool을 사용하여 시간 네트워크를 어떻게 시각화 할 수 있습니까?

시간대별로 네트워크를 플롯하려고합니다 (예 : 모든 타임 스텝에서 가장자리가 어떻게 변했는지, 색상 등의 속성이 변경된 방식). 이를 위해 모든 플롯에 대한 노드의 위치를 ​​수정해야합니다.

import graph_tool.all as gt 

## networks = {dictionary of time as the key and the Graph as the value} 

#getting the positions of the nodes once that should be fixed across Graphs 
initial_pos = gt.arf_layout(networks[0],weight=None, d=0.5, 
        a=10, dt=0.001, epsilon=1e-06, max_iter=100, pos=None, dim=2) 

for round_id in range(0,20): 
    G = networks[round_id] 
    fixed_pos = gt.arf_layout(G, max_iter=0, pos=initial_pos) 
    deg = G.degree_property_map("in") 
    deg.a = 15 * deg.a + 25 
    gt.graph_draw(
     G, 
     #pos=fixed_pos, 
     vertex_fill_color=G.vertex_properties["color"], 
     vertex_font_size=18, 
     vertex_size = deg, 
     vertex_shape = G.vertex_properties["shape"], 
     edge_pen_width = 5, 
     output_size=(1000, 1000), 
     output=("{0}.pdf".format(round_id)) 
    ) 

그러나 이것은 나에게 다음과 같은 오류를 제공합니다 :

나는이 시도

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-68-4efd39b32b83> in <module>() 
     5  #f, ax = plt.subplots(nrows=1, ncols=1, figsize=(17, 10), sharex=True) 
     6  G = nx2gt(networks[round_id]) 
----> 7  fixed_pos = gt.arf_layout(G, max_iter=0, pos=initial_pos) 
     8  deg = G.degree_property_map("in") 
     9  deg.a = 15 * deg.a + 25 

/Users/amaatouq/anaconda/lib/python3.4/site-packages/graph_tool/draw/__init__.py in arf_layout(g, weight, d, a, dt, epsilon, max_iter, pos, dim) 
    393 
    394  ug = GraphView(g, directed=False) 
--> 395  libgraph_tool_layout.arf_layout(ug._Graph__graph, _prop("v", g, pos), 
    396          _prop("e", g, weight), d, a, dt, max_iter, 
    397          epsilon, dim) 

/Users/amaatouq/anaconda/lib/python3.4/site-packages/graph_tool/__init__.py in _prop(t, g, prop) 
    177   raise ValueError("Expected '%s' property map, got '%s'" % 
    178       (names[t], names[prop.key_type()])) 
--> 179  return pmap._get_any() 
    180 
    181 

/Users/amaatouq/anaconda/lib/python3.4/site-packages/graph_tool/__init__.py in _get_any(self) 
    389   g = self.get_graph() 
    390   if t == "v": 
--> 391    N = g.num_vertices(True) 
    392   elif t == "e": 
    393    N = g.edge_index_range 

AttributeError: 'NoneType' object has no attribute 'num_vertices' 

답변

0

가 arf_layout에서 버그가 수 있도록 같다(). 다음과 같이 작성하여이 작업을 수행하십시오.

initial_pos = networks[0].own_property(initial_pos)