J'utilise la bibliothèque JUNG Java pour gérer les graphiques et je veux savoir comment colorer les nœuds connectés avec la même couleur pour distinguer les composants connectés.Utilisation de la bibliothèque Graphes JUNG
Par exemple, je veux les nœuds 2
, 3
et 4
d'avoir la même couleur et le noeud 1
d'avoir une autre couleur, sachant que la matrice de contiguïté est:
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
code pour créer le graphique (nœuds ont la même couleur):
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);
Alors, comment changer ce code pour avoir les composants connectés avec des couleurs différentes
@Tichodroma Maintenant OP ne comprend pas sa propre question, merci de votre modification invalide. –
@RomanC Si vous regardez les [révisions] (http://stackoverflow.com/posts/18331566/revisions), vous verrez que j'ai rajouté une modification qui a été supprimée par http: // stackoverflow. com/users/2345880/vaibhav-jain quand il a traduit une ancienne version de la question. Mais allez-y et annulez toutes les modifications. –
@ user2699285 Avez-vous un problème avec JUNG? Qu'avez-vous essayé jusqu'à présent? S'il vous plaît inclure votre code. –