Hallo,
ich versuche ein Fluss- / Ablaufdiagramm mit TikZ zu machen, leider bekomme ich es nicht hin. Was ich haben möchte:
Rechteckige Nodes, die je nach Kategorie (manuell zugewiesen) eine andere Farbe haben. Die Nodes sollen jeweils einfach mit einem Pfeil verbunden sein. Zusätzlich soll es weitere Nodes geben können, die mit gestrichelten Pfeilen mit einem dieser Nodes verbunden sind (können auch mehrere pro Node sein). Die Größe der Nodes soll variabel sein, die Abstände möglichst gleichmäßig. Ich habe ein smartdiagramm-Beispiel abgeändert (in Paint...) damit man sieht was ich meine.
Ich habe es manuell probiert, das ist unglaublich umständlich und sobald ich die Nodes unterschiedlich breit mache klappt das mit Abständen gar nicht mehr und mit smartdiagram bekomme ich nichts komplexeres als in den Beispielen hin.
Wie bekommt man sowas hin? Ich möchte nicht jedes Node manuell positionieren, da es am Ende sicher 50 oder so geben wird und wenn ich dann eins entferne möchte ich nicht 30 ändern müssen.
Meine aktuelle Lösung ist LibreOffice Impress, als PDF drucken und in das Dokument einbinden, aber das Ergebnis gefällt mir überhaupt nicht (Schriften passen nicht etc.)
Vielen Dank
Stefan
Flussdiagramm/smartdiagram mit unterschiedlichen Node-Größen
Flussdiagramm/smartdiagram mit unterschiedlichen Node-Größen
- Dateianhänge
-
- diagramm.png (17.3 KiB) 1869 mal betrachtet
-
- Forum-Meister
- Beiträge: 808
- Registriert: Di 2. Okt 2012, 21:42
- Wohnort: NRW
Das Beispiel aus Deiner Datei ist mit tikz recht leicht hinzubekommen. Ein Ausgangspunkt könnte http://www.texample.net/tikz/examples/s ... low-chart/ sein. Smartdiagram ist dann hilfreich, wenn man sich an die Vorlagen hält. Stefan hat letztens eine sinnvolle Vorgehensweise skizziert: http://golatex.de/viewtopic,p,79590.html#79590. Ansonsten: Erstelle bitte ein Minimalbeispiel, das Dein Problem zeigt.
Hallo,
danke für die Antwort, hier ein Minimalbeispiel:
Was ich erreichen möchte ohne absolute Positionen oder Einzelfalllösungen (am Ende gibt es ca. 50 Nodes), dass die Nodes immer einen Minimalabstand halten, aber dabei so dicht wie möglich kommen.
danke für die Antwort, hier ein Minimalbeispiel:
\documentclass[fontsize=12pt,paper=a4]{scrartcl} \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{shapes,arrows} \usetikzlibrary{decorations.pathmorphing} \usepackage[paper=a4paper,bottom=25mm, left=30mm, top=25mm, right=30mm]{geometry} \begin{document} \tikzstyle{line} = [draw, -latex'] \tikzstyle{anode} = [rectangle, draw, fill=red!20, node distance=3cm, text centered, rounded corners, minimum height=4em] \tikzstyle{bnode} = [rectangle, draw, fill=green!20, node distance=3cm, text width=5em, text centered, rounded corners, minimum height=4em] \begin{tikzpicture}[node distance = 2cm, auto] \node[anode] (sehrlang) {Hier steht ein sehr langer Eintrag}; \node[anode, right of=sehrlang] (kurz) {Kurz}; \node[anode, right of=kurz] (lang) {Langer Eintrag}; \node[bnode, below of=kurz] (kurz2) {Kurz2}; \node[bnode, below left of=lang] (mittellang) {Mittellang}; \node[bnode, below right of=lang] (irgendwas) {Irgendwas}; \path [line] (sehrlang) -- (kurz); \path [line] (kurz) -- (lang); \path[line,dashed] (kurz2) -- (kurz); \path[line,dashed] (mittellang) -- (lang); \path[line,dashed] (irgendwas) -- (lang); \end{tikzpicture} \end{document}
Mit TikZ gibt es sehr oft verschiedene Wege, die zum Ziel führen. Welchen man wählt, hängt vom ganz konkreten Einzelfall ab. Für Dich sind eventuell die TikZ Bibliotheken positioning und matrix von Interesse.
Hier ist mal ein Beispiel mit positioning, die die Angabe der Abstände zwischen den Nodes ermöglicht. Beachte die dabei zu right = of ... geänderte Syntax.

Hier ist mal ein Beispiel mit positioning, die die Angabe der Abstände zwischen den Nodes ermöglicht. Beachte die dabei zu right = of ... geänderte Syntax.
\documentclass[fontsize=12pt,paper=a4]{scrartcl} \usepackage[ngerman]{babel} \usepackage[vmargin=25mm, hmargin=30mm]{geometry} \usepackage{tikz} \usetikzlibrary{calc} \usetikzlibrary{arrows.meta} \usetikzlibrary{positioning} \tikzset{ >=Latex, line/.style={draw,->}, anode/.style={rectangle,draw,fill=red!20, align=center,rounded corners,minimum height=4em,font=\strut}, bnode/.style={anode,fill=green!20,text width=5em} } \begin{document} \begin{tikzpicture} \path[nodes=anode,node distance=2cm] node (sehrlang) {Hier steht ein\\sehr langer Eintrag} node [right=of sehrlang](kurz){Kurz} node [right=of kurz](lang){Langer Eintrag} ; \path[nodes=bnode,node distance=1cm and .5em] node[below= of kurz](kurz2) {Kurz} node[below left= of lang.south](mittellang){Mittellang} node[below right= of lang.south](irgendetwas){\hspace*{0pt}Irgend"-etwas} ; \path [every edge/.append style=line] (sehrlang) edge (kurz) (kurz) edge (lang) ; \path [every edge/.append style={line,dashed}] (kurz2) edge (kurz) (mittellang) edge (lang) (irgendetwas) edge (lang) ; \end{tikzpicture} \end{document}

- Dateianhänge
-
- gl_nodesposition.png (9.78 KiB) 1812 mal betrachtet