AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Graphviz - manuell Positionieren

Ein Thema von himitsu · begonnen am 10. Jun 2021 · letzter Beitrag vom 12. Jun 2021
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.057 Beiträge
 
Delphi 12 Athens
 
#1

AW: Graphviz - manuell Positionieren

  Alt 10. Jun 2021, 12:11
Ich habe einen Bot gebaut der wikipedias per Wiki API oder auch andere wikiframeworks per screenscraping
kartiert und aufzeigt welche Artikel wohin verweisen.
Die Ausgabe lief über graphViz und konnte daher eine SVG Datei sein, welche dann die Artikel direkt durch Anklicken der nodes annavigierte.

Ich denke es ist für deine idee am besten wenn du dir eine SVG datei generieren lässt und dann mit
Inkscape oder anderen Vector graphic editoren die SVG datei bearbeitest.

Zudem kann man in SVG dateien mit Javascript so sachen wie abstoßungskräfte und anziehungkräfte unterbringen, also eine voll animierte SVG bauen.

Letzten endes ist Graphviz einfach eine ansammlung von layout engines welche die dot language verstehen.
Es ist kein mal programm.
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (10. Jun 2021 um 12:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#2

AW: Graphviz - manuell Positionieren

  Alt 10. Jun 2021, 14:21
Links und Hints in der SVG sind mir bekannt und wären auch geplant (die PNG waren nur für jene, welche SVG nicht anzeigen wollen ... ohne zusätzliches Programm geht der MS Edge auf),

aber erstmal hab ich das Problem aus Graphwiz eine brauchbare "Ansicht" hinzubekommen.
Rein von der Menge würde es auf FullHD bzw. A4 passen (notfalls auch A3 oder A2), aber so weit wie das Zeug aktuell verteilt ist, wird alles sooooo klein, dass man nichts mehr lesen kann, wenn man runterzoomt, bis ALLES in die Anzeige passt.


Ja, auch in LibreOffice Draw kann ich die SVG rein bekommen, dann dort das Bild (SVG) zerlegen lasse, in die einzelnen Zeichenobjekte, welche sich verschieben lassen.
Bissl unpraktisch ist, dass hier dann Rahmen, Hintergrund und Text jeder Node einzeln sind. (muß man entweder aufpassen oder wieder Jedes einzeln zusammenfügen, damit es sich beim Verschieben nicht zerlegt)
Problem dabei ist aber, dass dann die Edges (Pfeile/Linien frei rumliegen und nicht mit den Items (an einem Ende) verschoben/gedreht/verlängert/... werden,
und das wird bestimmt in Inkscape genauso sein.


Im Prinzip würde es mir ja reichen, wenn in den Clustern/Gruppen sich die Items ordentlich/logisch einordnen
und ich dann nur noch die Cluster manuell anordnen könnte, da die bisher getesteten Engies es nicht zufriedenstellend hinbekommen.
Bzw. dass man sagen könnte, dass einiges Edges/Linien keine, bzw. eine geringere Auswirkung auf die Anordnung hätten.
Also im DOT das mit dem RANK besser funktioniert, bzw. im FDP das mit dem POS! wirklich funktionieren würde.


dot, fdp und osage sind die drei halbwegs sinnvollen vorhandenen Engines, aber wenn du deren Ausgaben (SVG) so weit verkleinserst, dass die auf den Bildschirm oder ein A4 passen, dann ist nichts mehr leesbar.
Oder versuche einfach mal der grünen Linie zu folgen (da wird dir schwindellig)





Die Erstellung der Nodes und der erste Edge-Pfad sind in der selben Reihenfolge
und (mögliches) in Dieser hätte ich auch gern die Nodes/Cluster sortiert, aber so, dass alles auf den Bildschirm passt.
z.B. läuft aktuell der grüne Pfad in den Clustern extrem ungüstig kreuz und quer hin und her, anstatt grade durch.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (10. Jun 2021 um 16:04 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.057 Beiträge
 
Delphi 12 Athens
 
#3

AW: Graphviz - manuell Positionieren

  Alt 11. Jun 2021, 16:26
Naja, sorry erstmal dass das wieder so einer dieser nicht ganz zur Lösung beitragenden Posts ist, aber...^^

Ich glaube nicht das die Layout engines von GraphViz dein Problem lösen und einfach mal einen Ästhetisch anmutenden Graph ausspucken der deinen Vorstellungen Entspricht.
Das sind letzten endes alles Programme von mathematisch denkenden Köpfen.

Von den Engines denke ich ist Dot noch am schönsten, da es versucht einen Graphen aufzubauen der in der gestallt sehr einem Baum ähnelt mit querverweisen ähnelt.

Es hilft also vermutlich wenn du die einzelnen Cluster seperat renderst und im Nachhinein selbst die einzelnen Verbindungen zwischen den Clustern ergänzt.

Also mit inkscape oder einem anderen Vector fähigen Malprogramm und sei es LibreOffice Draw.

Die Render engines können Ästhetik nicht.


Wird der "Rank" der Verbindungen in der SVG mit gespeichert?
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (11. Jun 2021 um 16:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#4

AW: Graphviz - manuell Positionieren

  Alt 12. Jun 2021, 10:43
In DOT ist die Sortierung/Reihenfolge oft halbwegs OK (so lange ich die restlichen ungerichteten Edges nicht einfüge),
aber hier ist auch alles am Weitesten verteilt, so dass man nichts mehr lesen kann, sobald man rauszoomt, um alles zu sehen.

OSAGE ist zwar schön kompakt, aber erkennen tut man nichts mehr, auch wenn die Texte lesbar sind,
wobei hier die Breite sogar noch schmaler werden könnte, da eigentlich nicht alle "breitesten" Nodes gemeinsam in einer Reihe wären.



Im Prinzip OSAGE, aber noch mit einer besseren Reihenfolge
und falls das mit der Anordnung der Cluster nicht passt, dann die noch bissl manuell umherschupsen. (aber bei subgraph/cluster kann POS nicht angegeben werden)


Ein "anderes" Graphikpformat/-programm wäre auch OK,
wenn man dort die Gruppen/Cluster manuell umherschiebt (vielleicht vorher schon eine grobe Position angeben)
und wenn man das irgendwie automatisch generieren könnte.
Angehängte Grafiken
Dateityp: jpg Graphviz Sortierung.jpg (80,9 KB, 24x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Jun 2021 um 11:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz