그래프를 관리하기 위해 JUNG 자바 라이브러리를 사용하고 연결된 컴포넌트를 구별하기 위해 같은 색상으로 연결된 노드를 색칠하는 방법을 알고 싶습니다. (라이브러리 JUNG 그래프 사용하기
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
코드의 그래프를 작성하는 노드 :
예를 들어, I는 인접 행렬 인 것을 알고, 다른 색상을 가지고 동일한 컬러와 노드 1
을 가지고 노드 2
, 3
및 4
원하는) 동일한 색상을 가지고 서로 다른 색상으로 연결된 구성 요소가이 코드를 변경하는 방법 그래서
Graph<Integer, String> g;
/** Creates a new instance of SimpleGraphView */
public ReadFile(int nbsommet,int [] [] nodeMat) {
// Graph<V, E> where V is the type of the vertices and E is the type of the edges
// Note showing the use of a SparseGraph rather than a SparseMultigraph
g = new SparseGraph<Integer, String>();
// Add some vertices. From above we defined these to be type Integer.
/*for (int i = 1; i <=nbsommet; i++) {
g.addVertex((Integer)i);
}*/
for (int i = 1; i <=nbsommet; i++)
{ g.addVertex((Integer)i);
for (int j = 1; j<=nbsommet; j++)
{
if((nodeMat[i][j]==1)&& (j>i))
{ if(!(g.getVertices().contains(j)))
{ g.addVertex((Integer)j);}
g.addEdge(i+" "+j, i, j);
}
}}}
//...
ReadFile sgv = new ReadFile(nbsommet,nodeMatfinal); // This builds the graph
//Design sgv1 = new Design();
Layout<Integer, String> layout = new KKLayout (sgv.g);
//TreeLayout layout = new TreeLayout(sgv.g,100,100);
layout.setSize(new Dimension(800,800));
BasicVisualizationServer<Integer, String> vv = new BasicVisualizationServer<Integer, String>(layout);
Transformer<Integer,Paint> vertexPaint = new Transformer<Integer,Paint>() {
public Paint transform(Integer i) {
return (Paint) Color.GREEN;
}
};
vv.setPreferredSize(new Dimension(850,850));
vv.getRenderContext().setVertexLabelRenderer(new DefaultVertexLabelRenderer(Color.green));
vv.getRenderContext().setEdgeDrawPaintTransformer(new ConstantTransformer(Color.white));
vv.getRenderContext().setEdgeStrokeTransformer(new ConstantTransformer(new BasicStroke(2.5f)));
vv.getRenderContext().setVertexFillPaintTransformer((Transformer<Integer, java.awt.Paint>) vertexPaint);
vv.getRenderContext().setVertexFillPaintTransformer(new PickableVertexPaintTransformer<Integer>(vv.getPickedVertexState(), Color.green, Color.yellow));
vv.setBackground(Color.gray);
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<Integer>());
vv.getRenderer().getVertexLabelRenderer().setPosition(Position.CNTR);
JFrame frame = new JFrame("Graph");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
을
@Tichodroma 이제 OP는 자신의 질문을 이해하지 못합니다. 잘못된 편집을 부탁드립니다. –
@RomanC [revisions] (http://stackoverflow.com/posts/18331566/revisions)를 살펴보면 http : // stackoverflow에서 제거 된 편집 내용을 다시 추가 한 것을 알 수 있습니다. com/users/2345880/vaibhav-jain에서 질문의 이전 버전을 번역했습니다. 그러나 모든 편집 내용을 되돌릴 수 있습니다. –
@ user2699285 JUNG 사용에 문제가 있습니까? 지금까지 뭐 해봤 어? 코드를 포함 시키십시오. –