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'