Flussdiagramm/smartdiagram mit unterschiedlichen Node-Größen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Flussdiagramm/smartdiagram mit unterschiedlichen Node-Größen

von esdd » So 8. Mai 2016, 19:32

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.
\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}
Bild
Dateianhänge
gl_nodesposition.png
gl_nodesposition.png (9.78 KiB) 1819 mal betrachtet

von stefan_o » So 8. Mai 2016, 14:11

Hallo,
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}
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.

von Beinschuss » Sa 7. Mai 2016, 06:49

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.

Flussdiagramm/smartdiagram mit unterschiedlichen Node-Größen

von stefan_o » Sa 7. Mai 2016, 02:29

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
Dateianhänge
diagramm.png
diagramm.png (17.3 KiB) 1876 mal betrachtet

Nach oben