Graphen malen

Vor einiger Zeit kam mal wieder die Frage auf, welche Software man denn am besten verwendet um Graphen zu malen. Nun kann man Leuten, die man gut leiden kann, schlecht Visio empfehlen. Zur weiteren Auswahl gehören noch Dia und verschiedene Internetseiten.

Allerdings – will man immer alle Knoten selbst malen? Speziell im Hinblick auf State-Machines könnte man sie doch generieren lassen?

Zufälligerweise gibt es eine ganze Sprache namens Dot, die sich damit befasst. So ist ein ungerichteter Graph schnell durch seine Edges beschrieben:


graph {
a -- b;
b -- c;
a -- c;
d -- c;
e -- c;
e -- a;
}

erzeugt folgende Grafik

dot-example

Diese Grafik kann man auf vielfache Weise anpassen – Name der Nodes ändern, Ausrichtung des Graphen, Beschriftung der Edges, Farben, Penwidth, Subgraphen usw usw. Weitere Beispiele finden sich hier.

Natürlich ist das Schreiben des Graphen die schnellste Methode der Eingabe. Wenn man sich allerdings unsicher ist bezüglich der Eingabe der Optionen, kann man das Programm Dotter benutzen. Es setzt noch nicht alle zur Verfügung stehende Optionen um, und es ist auch lediglich entwicklerschön. Nichtsdestotrotz stehen die grundsätzlichen Funktionen zur Verfügung.

Es wird ein Bild aus der Eingabe erzeugt, das wahlweise per Link oder per Grafik aus der Zwischenablage verwendet werden kann.

Das Tool ist in WPF geschrieben, läuft also (bislang?) nur unter Windows. Umgesetzt wurde es mit Prism. Es gibt erste Tests, die das Testing-Framework TestFX von Matthias Koch benutzen. Als Installer wurde mit WiX eingesetzt, den Build-Prozess erledigt das bewährte Tool FAKE.

Im Hintergrund untersucht ein mit Antlr implementierter DOT-Parser die Eingabe (was der Hauptgrund war für die Umsetzung des Programms). Mit Hilfe dieses von Terence Parr geschriebenen Parser-Generators fällt der Einsatz von eigenen Parsern sehr leicht. Denkbar wäre zum Beispiel die Umsetzung von Import-Bibliotheken für XML oder JSON. Einziger Nachteil ist Java, das aber nur für die Erzeugung des Parser-Quelltextes benötigt wird.

Advertisements
Dieser Beitrag wurde unter .NET, Antlr, C#, FAKE, Prism, WiX, WPF abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s