2015-01-19 2 views
0

저는 NetworkX와 Matplotlib를 사용하여 Python으로 작업하고 있습니다.동일한 그래프를 반복적으로 플로팅하는 것 - 같은 위치에 노드를 얻는 방법?

동일한 그래프를 여러 색상으로 반복해서 표시 할 때마다 매번 같은 위치를 차지하도록 노드를 얻으려면 어떻게해야합니까? 지금은 점점 :

하지만 노드를 사전의 키로 추가하고 각 노드의 색을 값으로 추가 한 다음 사전을 정렬하고 노드를 정렬 된 사전의 키로 전달합니다. 정렬 된 dict의 값으로 색상을 지정합니다. 같은 노드가 항상 같은 순서로 추가됩니다.

for ct2,i in enumerate(x): 
     for ct,j in enumerate(i): 
      vertex = j[t] 

      if np.angle(j[t]) <0 or np.angle(j[t]) >= np.angle(cutoff): 
       C[vertex] = 0.0 
      else: 
       C[vertex] = .8- 3*(np.angle(j[t])/np.angle(cutoff)) 
    COLORS = collections.OrderedDict(sorted(C.items())) 

그런 다음 그래프 전화 :

pos=nx.graphviz_layout(G,'dot')

nx.draw_networkx_nodes(
    G,pos,nodelist=COLORS.keys(),cmap=plt.get_cmap(cmap), 
    node_size=nodesize,alpha=.6,vmax=1,vmin=0, node_color = COLORS.values() 
) 

무엇 오전 나는

그래서, x 노드의 목록 (지점)를 보유하고 어디에 ... 문제가 해결 것이라고 생각 내가 잘못하고있어?

+0

와피 티 - 내 대답이 당신의 문제를 해결했는지 아닌지 확인하고 싶습니다. thx – Joel

답변

1

이 (? 외부? 내)을 그래프 통화가 루프에 비해 앉아 곳을보고 좋은 것

하지만 당신은 루프 내에서 pos=nx.graphviz_layout(G,'dot')있어 것 같습니다. 따라서 루프 내에서 매번 pos을 다시 계산합니다. 이것은 알고리즘을 알려주는 변수입니다. 위치는 다소 임의적이어서 각 호출은 다른 위치에 배치합니다 (spring_layout을 사용하면 더 명확합니다). 이것은 당신이 무슨 짓을했는지 경우

, 단지 루프 전에

pos=nx.graphviz_layout(G,'dot') 

이동합니다. 그런 다음 매번 재생성되지 않습니다.

+0

안녕하세요, 귀하의 답변은 도움이되었습니다. 오늘 드릴 다운 할 시간이 없었습니다. 나는 진짜 문제는 내가 해결하려고하는 문제 때문에 내가 매우 복잡한 방식으로 일을하고 있다고 생각한다. 나는 당신의 대답이 올바른 길에 있다고 생각하며, 내가 알기 만하면 그것을 받아 들일 것입니다. – Wapiti

+0

마침내 이것을 들여다 볼 기회가 생겼고 당신이 옳았다. 고마워, 조엘! – Wapiti

관련 문제