2014-01-25 11 views
0

JDK 1.7 + Jung2 사용.가장자리 값을 가장자리의 값에 비례하여 설정하는 방법

필자는 유사성 매트릭스를 가지고 있고 그것을 jung2 그래프를 사용하여 그래픽으로 분석하려고합니다. 내 데이터 세트 등의 데이터로 구성되어, 각 라인

object1 object2 0.54454 
object1 object3 0.45634 
object2 object3 0.90023 
[..] 

값이 이전 오브젝트 간의 유사성을 나타낸다 : I 그래프를 만들

(즉 오브젝트 1은 object2으로 0.54454 유사성을 갖는다) 어디 꼭지점 사이의 거리는 가장자리 값에 비례합니다. 위 예제에서 sim (object1, object2)> sim (object2, object3)이므로 object1은 object3보다 object2에 더 가깝게 배치됩니다.

Jung2를 사용하여 어떻게 이러한 작업을 수행 할 수 있습니까? 기본 레이아웃은이 작업을 수행하지 않습니다.

답변

0

이것은 사용하려는 레이아웃에 따라 다릅니다. 그래프의 구조에 따라 - - SpringLayout를 들어,

class EdgeLengthTransformer implements Transformer<Edge, Integer> { 
    @Override 
    public Integer transform(Edge edge) { 
     int minLength = 100; // Length for similarity 1.0 
     int maxLength = 500; // Length for similarity 0.0 
     Vertex v0 = graph.getSource(edge); 
     Vertex v1 = graph.getDest(edge); 
     float similarity = obtainSimilarityFromYourDataset(v0, v1); 
     int length = (int)(minLength + (1.0 - similarity) * (maxLength - minLength)); 
     return length; 
    } 
} 

당신은 항상 고려해야 할 것이다 당신이 간단하게 구현할 수는 length_function 매개 변수로 생성자에 Transformer를 전달할 수를 원하는대로 정점을 배치 할 수 없을 수도 있습니다. 예를 들어, 유사성이 http://en.wikipedia.org/wiki/Triangle_inequality을 따르지 않으면 2D 공간에 이러한 유사성을 적절히 임베딩 할 수 없습니다.

관련 문제