Frage

Ich habe Perfektion Lähmung, wenn es darum geht, etwas Grafik zu erzeugen. Wenn Symmetrien der visuellen noch nicht vollständig erforscht worden, habe ich eine härtere Zeit zu begreifen, was los ist. Ich bin ein sehr visueller Lerner als auch, und ich liebe es, Dinge zu vereinfachen, dass ich gerade gelernt und sich auf Papier zeichnen.

Graphviz ist ein nettes Tool, um etwas automatisch zu zeichnen, aber es könnte besser sein. Beginnen wir mit einem Beispiel für eine gute Grafik) eine Zustandsmaschine eher). Nie die Qualität ausmacht (es kann neu gezeichnet mit einem besseren Werkzeug sein) dieser fast perfekt ist, außer, dass ich gegen den Uhrzeigersinn um 45 Grad drehen würde die Symmetrie erkennbar zu machen. Es sollte dann die Leser weniger Zeit, um herauszufinden, wie sich die Zustände q1 und q2 sind ähnlich und wie, wo sie sich unterscheiden. Ich behaupte, dass es ein einziger bester Weg, das Diagramm darzustellen, da es keine andere Stücke Grafik daneben.


(Quelle: gallery.hd.org )

Jetzt Look läßt bei einer weniger als perfekten Darstellung:


(Quelle: softpedia.com )

Das sieht aus wie etwas würde ein graphviz erzeugen. Ja, sind die Kanten glatt, aber GAAAAWWWD diese verwirrenden unnötig ist! Es sieht aus wie eine Mindmap, nicht ein fertiges Diagramm zum Verzehr bereit. Ich glaube, dass das menschliche Auge CRAVE (nicht weniger) Symmetrie. Ja, Hierarchie usw. sind ebenfalls wichtige Faktoren.

Ich bin überrascht, dass es nicht besser verfügbaren Algorithmen. Manche Menschen sind nicht visuelle Lerner überhaupt; sie können durch Lesen von Symbolen abstrakte Konzepte erfassen. Ich nicht!

Also, was ist meine Frage? Nun, ist es besser, kostenlose Software zum Zeichnen kleine bis mittlere Graphen? Vielleicht

Danke!

Lassen Sie mich wissen, wie ich diesen Beitrag verbessern kann.

P. S. Ich habe 10 Minuten, um ein ähnlich genug Klon in dia zu ziehen. Es ist noch nicht perfekt, aber es war praktisch, weil alles Schnappschüsse Raster zu machen (und ich verpasst ein paar kleine Details, aber nicht das Gefühl, wie Re-Upload). Die LR_0 braucht einen „Start --->“ kommt von oben der Benutzer zu lassen eher den Ausgangszustand erreichen.

War es hilfreich?

Lösung

Nach mehreren Versuchen an Ihrer Grafik zu zeichnen, und andernfalls ein Layout zu bekommen, dass Sie halten „beste“, können Sie die Frage gestellt hier: ist es „[b] Etter freie Software [für] Zeichnung klein- bis mittleren Graphen. " Das einzige Kriterium Sie Layout-Algorithmen für die Auswertung ist gegeben haben, wie eng sie mit dem kommen‚[s] ingle beste Weg, um dieses Diagramm darzustellen.‘ „Best“ natürlich, die für Sie zu entscheiden.

Dies ist mehr oder weniger das gleiche wie der Versuch, ein Problem mit einer bestimmten Programmiersprache zu lösen, in Ermangelung, und dann für eine bessere Programmiersprache zu fragen.

Im Herzen des Graphen Zeichnen Algorithmen Optimierungsroutinen, die dann Lösungen Auswertung erzeugen ( ‚Lösung‘ bezieht sich hier auf die Koordinaten für jeden Knoten, die zusammen ein Layout umfassen). Diese Lösungen werden nach Minimierung eines einzigen Kriteriums oder einer Reihe von Kriterien bewertet Rang - dh die Minimierung eines oder mehrerer Attribute des Graphen - beispielsweise die Gesamtzahl der Kanten, die Quer, oder die Summe der Abstände zwischen den Knoten (oder die Kombination beider oder irgendeiner gewichteten Kombination dieser beiden), oder die Nähe zu einer symmetrischen Konfiguration. Graphviz besteht aus sechs verschiedenen Layout-Algorithmen (dot neato, FDP, SFDP, twopi und circo). Davon scheint es nur gebrauchten Punkt; jedoch twopi und circo vielleicht besser gewesen, Optionen, um ihre strenge Symmetrie Einschränkungen gegeben haben, die erscheinen Ihre eigene Vorstellung von einem korrekt gezeichnet Diagramm entsprechen.

Zweitens ist der Text Ihrer Frage auf „Graphen“ gerichtet ist und Graph-Zeichnung, nach dem vollständigen Beschreibung zu lesen, ich glaube nicht, Ihre Frage etwas mit jedem Konzept zu tun.

über die allgemeine Zeichnen von Graphen-Algorithmen (wie graphviz), gibt es eine Reihe von domänenspezifischen Layout-Algorithmen, zum Beispiel, Hasse-Diagramme (zur Darstellung teilweise geordnete Mengen, um Theorie), Barabasi-Albert Graphen (skalenfreie Netzwerke ) und Erdos-Renyi (Zufallsgraphen). Jeder dieser Algorithmen erzeugt ein Graph Layout anhand von Kriterien und Einschränkungen der Domäne geliefert - dies auf Ihnen, um anzuzeigen, soll, dass es nicht ein einziges „bestes“ Layout in allen Domänen. Auch wenn Sie den Begriff „Graph“ in Ihrer Frage verwenden, zeigt an Ihrer Beschreibung, dass Ihr Problem Zustandsmaschinen Zeichnung bezieht - eine höchst eigenwillige Art von Graphen. Allgemeine Zeichnen von Graphen-Algorithmen sind oft arm an spezialisierte grafische Darstellungen dieser Art zeichnen, da der Algorithmus nichts über Domain-weiß. In der Tat bin ich von jedem Layout-Algorithmus für Zustandsdiagramme nicht bewusst - so wie es nicht eine für Flussdiagramme (nicht das gleiche, aber ähnlich) ist. Workflow-wiese, können Sie die Grafik in graphviz ziehen dann importieren sie Omnigraffle für Tuning in Ordnung -. In Omnigraffle Sie feinkörnige Kontrolle über die Knoten- und Kantenplatzierungen haben werden

Andere Tipps

Es gibt eine Reihe von Optionen, ich kenne:

  • Prefuse - Sie haben eine ältere Java-Version . Die neueste Version ist in Flash und hat einige schöne Layouts. Seine genannt Prefuse Flare . Die Demo-Seite einige seiner Layout-Funktionen zeigt.
  • JUNG enthält eine Reihe von Layout-Optionen, sowie seine leistungsfähigen Funktionen Graphanalyse. Es gibt einige Beispiele hier .
  • NetworkX auch zahlreiche Layout-Funktionen. Einige von ihnen sind aufgelistet hier .

lassen Einige Software-Benutzer Layout-Algorithmen in Echtzeit zwicken, solange Knoten mit der Maus verschieben. Dieser Ansatz kann Ihnen sehr für größere Diagramme helfen.

ich meistens wissen Gephi (disclamer: Ich bin ein dev).

TikZ erzeugt schönes graph-Layout . Sie können eine manuelle Layout verwenden, die Sie das Minimum Hinweise geben können, oder Sie können für die automatische Layout fragen. Die Standardwerte sind gut, und Haken besteht bis zur Perfektion zwicken.

Mit der halbmanuellen Layout Sie müssen nicht jedes Detail erklären, weil Sie

  • declare Knoten als ‚oben‘, ‚unten rechts‘ usw. in Bezug auf andere Knoten.
  • platzieren Sie Ihre Knoten auf einem Raster von ihnen als Matrix eingeben:. Sehr praktisch, wenn man einige Positionen leer lassen möchten
  • leicht in festlegen, welche Richtung Kanten geben sollte, verlassen, biegen oder Ecken nehmen

Für die automatische Layout, TikZ der graphdrawing Bibliothek hat einige ziemlich glatt Algorithmen .

Hier ist ein Beispiel für manuelles Layout und der TeX-Code verwendet, um es zu erhalten:

Beispiel Graph

\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\usepackage[latin1]{inputenc}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,
                    semithick]
  \tikzstyle{every state}=[fill=red,draw=none,text=white]

  \node[initial,state] (A)                    {$q_a$};
  \node[state]         (B) [above right of=A] {$q_b$};
  \node[state]         (D) [below right of=A] {$q_d$};
  \node[state]         (C) [below right of=B] {$q_c$};
  \node[state]         (E) [below of=D]       {$q_e$};

  \path (A) edge              node {0,1,L} (B)
            edge              node {1,1,R} (C)
        (B) edge [loop above] node {1,1,L} (B)
            edge              node {0,1,L} (C)
        (C) edge              node {0,1,L} (D)
            edge [bend left]  node {1,0,R} (E)
        (D) edge [loop below] node {1,1,R} (D)
            edge              node {0,1,R} (A)
        (E) edge [bend left]  node {1,0,R} (A);
\end{tikzpicture}
\end{document}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top