2008-10-07 5 views
2

저는 프리 퓨즈 시각화 툴킷을 처음 접했고 몇 가지 일반적인 질문이 있습니다. 내 목적을 위해, 나는 prefuse (graphview/graphml)를 사용하여 초기 시각화를 수행하고 싶다. 일단 사용자가 노드를 클릭하면 새로운 시각화를 위해 새 XML 파일을 완전히 다시로드하고 싶습니다. 그래프를 "미리 패키지화"하여 표시 할 수있게하려면이 작업을 수행하고 싶습니다.Prefuse : XML 파일 다시로드

예를 들면. 내가 테드를 찾으면. Ted로드와 관련된 xml 파일을 갖고 디스플레이를 렌더링하고 싶습니다. 이제 디스플레이에서 나는 Ted가 Bill과 Joe라고하는 노드를 가지고 있다는 것을 알았습니다. Joe를 클릭하면 디스플레이를 지우고 Joe와 관련된 xml 파일을로드하려고합니다. 등등.

모든 노드 및 노드 관계 정보가 포함 된 하나의 매우 큰 xml 파일을로드하고 프리 퓨처가 한 레벨에서 다른 레벨로의 홉을 사용하여이를 처리하도록했습니다. 그러나 결국에는 데이터의 크기로 인해 시스템 성능 문제가 발생할 것이라고 확신합니다. 사전에 어떤 도움

감사합니다, 존 물론

답변

1

당신이 말한대로, 하나의 옵션은 모든 노드를로드 한 다음 눈에 보이지 않는 일 필요가없는 노드를 설정합니다. Prefuse는 꽤 잘 확장되지만 물론 한계가 있습니다. 두 번째 옵션은 새로운 패널을 만들고 이전 패널을 교체하는 것입니다. 나는 옵션 2를 사용했고 꽤 잘 작동한다.

0

필자는 Prefuse의 성능 문제에 대한 전문가는 아니지만 필요한 노드를 다시로드하기위한 처리보다 한 번에 큰 XML 파일을로드하는 것이 리소스 집약적이라고 생각합니다.

어떤 종류의 그래프를 사용하고 있는지 알 수는 없지만 Visualization 개체에서 그래프를 제거하고 Activity를 취소하고 Layout을 취소하고 ActionList를 새로 고쳐 다시 시작하는 'refreshGraph'를 배치 할 것입니다. 아마 다음과 같은 것을보실 수 있습니다 :

public void refresh(clickedNode){ 
    visualization.removeGroup(GRAPH); 
    visualization.removeGroup(AGGR); 
    activity.cancel(); 
    actionList.cancel(); 
    visualization.reset(); 
    // process the XML and reload your graph here 
}