2017-05-26 3 views
2

Ich verwende Komponenten mit signifikanter Größe für Scheitelpunkte (durch Überschreiben mxGraphComponent.createComponents) und mxOrganicLayout oder mxFastOrganicLayout überlappen sie. mxHierarchicalLayout nicht mit meinen aktuellen Grafiken, aber ich bin mir nicht sicher, ob das garantiert ist.Knotenüberlappung in JGraphX ​​verhindern

Kann ich 1) Überlappung in einem der organischen Layouts vermeiden? 2) sicher sein, dass mxHierarchicalLayout Knoten nie überlappen?

Antwort

2

Ich bin mir nicht sicher, ob Sie hier noch nach einer Lösung suchen, aber ich habe Ihre Frage gefunden, als ich versuchte, Überlappungen zu vermeiden.

Wenn Sie nicht wussten, können Sie mit einigen der Attribute für die organischen Layouts experimentieren. Zum Beispiel können Sie wie folgt vorgehen:

mxFastOrganicLayout layout = new mxFastOrganicLayout(adapter); 
layout.setForceConstant(150); 

Die Kraftkonstante hat die folgende Beschreibung in der Dokumentation:

Die Kraftkonstante, durch die die Anziehungskräfte geteilt und die Abstoßungskräfte sind mehrere von das Quadrat von.

Für mich spielte ich mit der Kraftkonstante herum, bis ich ein Layout mit viel weniger Überlappungen bekam. Es gibt eine Reihe anderer Attribute, mit denen Sie auch herumspielen können, um zu sehen, ob dies Ihren überlappenden Problemen hilft. Diejenigen, die den größten Unterschied für mich gemacht sind wie folgt:

layout.setMinDistanceLimit(5); 

Steigerung Ihrer minDistanceLimit sollten Ihre Eckpunkte erlauben, um sich auszubreiten.

Da fastOrganicLayout auch durch simuliertes Glühen funktioniert, können Sie tatsächlich die maximale Anzahl von Iterationen angeben, durch die das Layout ausgeführt werden soll. Wenn Ihre Karte besonders komplex ist (mit vielen Scheitelpunkten), kann dies ebenfalls hilfreich sein.

Für mich änderte die Änderung der Kraftkonstante den größten Unterschied, aber Ihre Laufleistung kann variieren.

Ich habe noch kein hierarchisches Layout verwendet, aber es scheint ähnliche Attribute zu geben, die Sie ändern können, was Ihre Chance auf Überlappungen verringern könnte.

Wenn Sie eine solidere Lösung als diese gefunden haben, dann wäre es großartig, wenn Sie es teilen könnten.

+1

'Es gibt eine Reihe anderer Attribute, mit denen Sie auch spielen können '- Können Sie genauer bestimmen, welche Attribute hier relevant sind? –

+0

@VsevolodGolovanov Danke für Ihren Rat. Ich habe einige relevante Attribute hinzugefügt. – Tom