2012-09-14 3 views
0

나는 시공간 그래프가 그려지는 예제를 찾고있다. Graphviz를 살펴 보았지만 관련 사례를 찾을 수 없습니다. 컴퓨터 네트워크의 그래프를 그려야하고 네트워크는 10 초 후에 변경된다고 가정합니다. 하나의 시나리오에 대해 플롯 할 수 있지만 이제는 다른 시간에 얻은 다른 그래프를 공간 시간 그래프로 결합해야합니다. 나는 플로팅을 위해 파이썬을 사용합니다. 그래도 Graphviz, matplotlib, networkx 등과 같은 도구를 사용하는 모든 관련 예제가 도움이 될 것입니다.파이썬에서 공간 시간 그래프를 그릴 때

이 점에 대한 조언과 지침은 매우 높이 평가됩니다.

당신은

+0

Space Time 그래프의 의미를 보여줄 수 있습니까? 그 구문에 대한 나의 해석은 당신이 원하는 것이 아닌 것으로 의심되는 상대성 이론을 포함합니다 (http://en.wikipedia.org/wiki/Minkowski_diagram). – tacaswell

+0

이 이미지 http://imageshack.us/a/img521/9890/spacetimegraph.png와 같은 것을 갖고 싶습니다. 시간 = 0에서 노드 B, C 및 D가 연결되고 A가 단독입니다. 시간 = 10에서 노드 A와 B가 연결됩니다. 또한 C와 D가 연결됩니다. 등등 .... – OSMuser

+0

이 질문에 대한 답변을 수락해야합니다. – tacaswell

답변

0

답장을 보내 주셔서 감사합니다. 나는 이미 어떤 일을 해왔으므로 그렇게 할 수 없다면 나는 당신이 제안한대로 파고 들어갈 것입니다. enter image description here

그러나 나는 이런 식으로 뭔가를 원하는 : 지금 내가 가진

enter image description here

이 이미지를 생성하는 graphviz를 사용하는 .DOT 파일 코드 :

graph { 
    rankdir=LR; 
    subgraph cluster01 { 
     label="t=0" 
     a0 [label="A"]; 
     a1 [label="B"]; 
     a2 [label="C"]; 
     a5 [label="E"]; 
     a0 -- a1; 
     a1 -- a2 ; 
     a2 -- a0; 
    }; 

    subgraph cluster02 
    { 
     label="t=10" 
     b0 [label="A"]; 
     b5 [label="E"]; 
     b1 [label="B"]; 
     b2 [label="C"]; 

     b0 -- b1; 
     b2 -- b5; 
    }; 

    a0--b0 [style=dotted]; 
    a1--b1 [style=dotted]; 
    a2--b2 [style=dotted]; 
    a5--b5 [style=dotted]; 
} 

내가 생각을 "계급"으로 제대로 놀 수는 없습니다.

+0

이 문제는 해결되었습니다. http://stackoverflow.com/questions/12463541/subgraph-layout-in-graphviz – OSMuser

0

내가 matplotilb를 사용하여이 작업을 수행 할 것입니다 감사합니다. 이것은 최소한의 코드입니다. 불연속 라인에 대해서는 점을위한 개별 플롯 대신에 산산이로 이것을 수행하고 NaN으로 게임을하는 것이 더 효율적일 수 있습니다. 그러나 이것은 효과적입니다. 타원 예제는 here을 참조하십시오. textdocumentation 또는 애호가가되고 싶다면 doc.

import matplotlib.pyplot as plt 
import numpy as np 

def plot_level(ax,t,location_map, link_pairs,shift_scale = 10): 
    # add some code that adds the ellipse + time label  
    shift = np.array([0,t*shift_scale]) 

    # plot nodes + labels 
    for key in location_map: 
     pt_location = location_map[key] + shift 
     ax.plot(pt_location[0],pt_location[1],'ok') 
     ax.text(pt_location[0],pt_location[1],key + "%d"%t) # play with this to make it look good 

    # plot connections 
    for a,b in link_pairs: 
     ax.plot(*(np.vstack((location_map[a],location_map[b])) + shift.T).T,color='k') 
    plt.draw() 


location_map = {} 
location_map['A'] = np.array([0,0]) 
location_map['B'] = np.array([1,1]) 
location_map['C'] = np.array([2,0]) 
location_map['D'] = np.array([3,1]) 

link_pairs1 = [('A','B')] 
link_pairs2 = [('B','C')] 

fig = plt.figure() 
ax = plt.gca() 
ax.yaxis.set_visible(False) 
ax.xaxis.set_visible(False) 
# function_that_draws_axes_marker 
plot_level(gca(),0,location_map,[]) 
plot_level(gca(),1,location_map,link_pairs1) 
plot_level(gca(),2,location_map,link_pairs2) 
# function_that_draws_vertical_lines(t_range,location_map,shift_scale=10) 
관련 문제