그래프를 시각화하기 위해 Jung 라이브러리를 사용하기 시작했습니다. 현재 주요 문제는 내 정점에 레이블/메타 데이터를 설정하는 방법을 모른다는 것입니다. 정점의 특정 속성에 따라 정점을 다르게 색칠하고 싶습니다. Node 클래스의 객체에는 추가 Integer-value가 포함되어 있으며, 정점에 대한 추가 속성 (getGroup()에 의해)으로 추가하고 싶습니다. 다음 코드는 각 노드의 getId() - 문자열 만 시각화합니다.Jung 라이브러리를 사용하는 정점 레이블
권장 사항은 무엇입니까?
이
메인 클래스 내 다음 코드를Graph<String,Double> g = new SparseGraph<String,Double>();
List<Link> linkList = new ArrayList<Link>();
List<Node> nodeList = new ArrayList<Node>();
linkList = f.getLinks();
nodeList = f.getNodes();
for(Node nodeElement:nodeList){
g.addVertex(nodeElement.getId());
}
for(Link linkElement:linkList){
g.addEdge(linkElement.getValue(), linkElement.getSource(), linkElement.getTarget());
}
VisualizationImageServer vs =
new VisualizationImageServer(
new SpringLayout(g), new Dimension(500, 500));
vs.getRenderContext().setVertexLabelTransformer(new ToStringLabeller() {
public String transform(Object v) {
return Integer.toString(((Node)v).getGroup());
}
});
JFrame frame = new JFrame("");
frame.getContentPane().add(vs);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
감사 (말할 필요도없이,
ToStringLabeller()
자바 (8) : 선행). 나는 정 2.1.1을 사용하고 있는데, 최신 버전이다. 함수를 구현 (재정의)하여 새 함수를 정의합니다. 이제는 작동하지만 약 500 노드의 성능으로 인해 8GB RAM 노트북에 약간의 문제가 발생합니다. – Matzka