Visualisierung von ungerichtetem Graph

Hallo,

für meine Abschlussarbeit suche ich eine Möglichkeit einen großen Graphen mit folgenden Eigenschaften darstellen zu lassen und navigieren zu können:

  • ungerichtete Kanten
  • mehrere Zeilen Text in den Knoten
  • gewichtete Kanten
  • zwei verschiedenen Arten von Knoten (Klassifizierungen und Elemente)
  • kein Baum, stattdessen kann ein Element potentiell mit allen Klassifizierungen verbunden sein

Es handelt sich dabei um ein Assoziagramm.
Bisher habe ich aiSee mit dem Forcedir Algorithmus ausprobiert.
In diesem Programm kann ich die Kantengewichte zwar darstellen, aber die Kanten rücken nicht in Abhängigkeit der Gewichte näher/weiter zusammen.
Abgesehen davon habe ich ein viel größeres Problem:
Die Knoten werden ständig übereinander optisch angeordnet, so dass man den Text nicht lesen kann, und oft auch ziemlich wirr, so dass man die Kanten nicht klar zuordnen kann. Platz wäre aber auf der Seite genug, als dass man die Knoten gut lesbar dastellen könnte.
Ich kann die Knoten in aiSee auch nicht draggen und droppen, wie ich sie will.

Natürlich habe ich auch schon versucht die einzelnen Parameter von Forcedir zu ändern und andere Algorithmen aus aiSee ausprobiert.
Kennt jemand ein Programm, mit dem ich diesen Graph irgendwie automatisch sinnvoll visualisieren kann? Am besten ausgehend von der jetzigen Darstellung als gdl?
Ich habe gesehen, es gibt Programme zum Umwandeln von gdl in andere Formate.

Hier noch ein Beispiel mit dem letzten Stand an Parametern:

graph: {
title:„Assoziagramm“
layoutalgorithm: forcedir // aiSee - Graph Visualization
//finetuning: yes // bringt nichts
//xspace: 100 // bringt nichts
//yspace: 200 // bringt nichts

fdmax : 50 //300
attraction : 80
repulsion : 200 //200
gravity : 0
randomrounds : 0 //10
randomimpulse : 0 //3
tempmax : 250 //100
tempmin : 2 //2
tempscheme : 2 //2, 7
tempfactor : 1.08 //1.01
randomfactor : 100 //80
magnetic_field1: top_to_bottom
magnetic_field2: orthogonal
magnetic_force1: 20
magnetic_force2: 1
//pmax: 100
//pmin: 30
//rmax : 100
//rmin : 5
//energetic: yes

//scaling : maxspect
border x : 1000
border y : 1000

edge.arrowsize : 70
arrowmode : free
//equal_y_dist : yes
textmode: center
display_edge_labels: yes
node.fontname : „helvR10“
node.textcolor:blue

node: { title:„class1“ label:„Klasse“}
node: { title:„class2“ label:„Klasse“ }
node: { title:„class3“ label:„Klasse“}
node: { title:„class4“ label:„Klasse“ }
node: { title:„class5“ label:„Klasse“ }
node: { title:„class6“ label:„Klasse“ }
node: { title:„class7“ label:„Klasse“ }
node: { title:„class8“ label:„Klasse“ }
node: { title:„class9“ label:„Klasse“}
node: { title:„class10“ label:„Klasse“}
node: { title:„class11“ label:„Klasse“}
node: { title:„class12“ label:„Klasse“}
node: { title:„class13“ label:„Klasse“}
node: { title:„class14“ label:„Klasse“}
node: { title:„class15“ label:„Klasse“}
node: { title:„class16“ label:„Klasse“ }
node: { title:„class18“ label:„Klasse“}
node: { title:„class19“ label:„Klasse“}
node: { title:„class20“ label:„Klasse“}
node: { title:„class21“ label:„Klasse“}
node: { title:„class22“ label:„Klasse“}

node.textcolor:black
node.shape:ellipse
node.width: 240
edge.arrowstyle:none

node: { title:„el7“ label:„Element\nBesr\nZusatz“ }
edge: { source:„el7“ target: „class2“ label: „2“}
edge: { source:„el7“ target: „class3“}
edge: { source:„el7“ target: „class6“ label: „2“}
edge: { source:„el7“ target: „class4“}
edge: { source:„el7“ target: "class5"label: „2“}

node: { title:„el8“ label:„Element\nBesr\nZusatz“ }
edge: { source: „el8“ target: „class7“ label: „2“}
edge: { source: „el8“ target: „class12“ label: „2“}
edge: { source: „el8“ target: „class2“ }

node: { title:„el9“ label:„Element\nBesr\nZusatz“ shape: ellipse }
edge: { source: „el9“ target: „class4“ label: „2“}
edge: { source: „el9“ target: „class10“ }

node: { title:„el10“ label:„Element\nBesr\nZusatz“ }
label:„Element\nBesr\nZusatz“
edge: { source: „el10“ target: „class3“ label: „2“}
edge: { source: „el10“ target: „class8“ }

node: { title: „el11“ label:„Element\nBesr\nZusatz“ }
edge: { source: „el11“ target: „class9“ }
edge: { source: „el11“ target: „class4“ label: „2“}
edge: { source: „el11“ target: „class11“ }
label:„Element\nBesr\nZusatz“
node: { title: „el12“ label:„Element\nBesr\nZusatz“ shape: ellipse }
edge: { source: „el12“ target: „class3“ }
edge: { source: „el12“ target: „class12“ label: „2“}

node: { title:„el35“ label:„Element\nBesr\nZusatz“}
edge: { source: „el35“ target: „class6“ label: „2“}

node: { title:„el36“ label:„Element\nBesr\nZusatz“}
edge: { source: „el36“ target: „class2“ label: „3“}

node: { title:„el37“ label:„Element\nBesr\nZusatz“}
edge: { source: „el37“ target: „class2“ }
edge: { source: „el37“ target: „class13“ label: „2“}
edge: { source: „el37“ target: „class3“ }
edge: { source: „el37“ target: „class5“ }

node: { title:„el45“ label:„Element\nBesr\nZusatz“}
edge: { source: „el45“ target: „class15“ }
edge: { source:„el45“ target: „class14“ label: „2“}

node: { title:„el46“ label:„Element\nBesr\nZusatz“}
edge: { source: „el46“ target: „class14“ }

node: { title:„el47“ label:„Element\nBesr\nZusatz“}
edge: { source: „el47“ target: „class14“ }

node: { title:„el48“ label:„Element\nBesr\nZusatz“}
edge: { source: „el48“ target: „class14“ }
edge: { source: „el48“ target: „class16“ label: „3“}

node: { title:„el49“ label:„Element\nBesr\nZusatz“}
edge: { source: „el49“ target: „class14“ label: „3“}

node: { title:„el50“ label:„Element\nBesr\nZusatz“}
edge: { source: „el50“ target: „class18“ }

node: { title:„el51“ label:„Element\nBesr\nZusatz“}
edge: { source: „el51“ target: „class18“ }
edge: { source: „el51“ target: „class5“ }

node: {title: „el52“ label:„Element\nBesr\nZusatz“}
edge: { source: „el52“ target: „class5“ label: „2“}
edge: { source: „el52“ target: „class3“ label: „2“}

node: { title:„el67“ label:„Element\nBesr\nZusatz“}
edge: { source: „el67“ target: „class3“ label: „2“}
edge: { source: „el67“ target: „class14“ }
edge: { source: „el67“ target: „class4“ }
edge: { source: „el67“ target: „class6“ }

node: { title:„el65“ label:„Element\nBesr\nZusatz“}
edge: { source: „el65“ target: „class15“ }
edge: { source:„el65“ target: „class12“ label: „2“}

node: { title:„el66“ label:„Element\nBesr\nZusatz“}
edge: { source: „el66“ target: „class14“ }

node: { title:„el77“ label:„Element\nBesr\nZusatz“}
edge: { source: „el77“ target: „class15“ }

node: { title:„el78“ label:„Element\nBesr\nZusatz“}
edge: { source: „el78“ target: „class18“ }
edge: { source: „el78“ target: „class16“ label: „2“}

node: { title:„el79“ label:„Element\nBesr\nZusatz“}
edge: { source: „el79“ target: „class14“ label: „4“}

node: { title:„el70“ label:„Element\nBesr\nZusatz“}
edge: { source: „el70“ target: „class1“ }

node: { title:„el71“ label:„Element\nBesr\nZusatz“}
edge: { source: „el71“ target: „class18“ }
edge: { source: „el71“ target: „class4“ label: „2“}

node: {title: „el72“ label:„Element\nBesr\nZusatz“}
edge: { source: „el72“ target: „class5“ }
edge: { source: „el72“ target: „class2“ label: „2“}
}