Seite 1 von 1

Flussdiagramm mit TikZ

Verfasst: Di 24. Mär 2020, 12:50
von update.freak
Hallo zusammen,

habe heute zum ersten Mal ein Flussdiagramm mit TikZ erstellt.
Daher bitte ich euch den Code einmal anzuschauen ob es Verbesserungsmöglichkeiten gibt (die für mich als Neuling noch nicht ersichtlich sind)?
\documentclass[
fontsize=12pt,
ngerman
]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage{babel}

\usepackage{tikz}
\usetikzlibrary{shapes,arrows}

\begin{document}
\begin{figure}[htbp]
	\centering
	\tikzstyle{start} = [draw, rounded rectangle, thick, rounded corners, minimum width=12em, minimum height=3em, text centered]
	\tikzstyle{block} = [draw, rectangle, thick, rounded corners, minimum width=12em, minimum height=3em, text centered]
	\tikzstyle{decision} = [draw, diamond, thick, node distance = 3.5cm, text width=6em, text badly centered, inner sep=0pt]
	\tikzstyle{line} = [draw, thick, -latex']
	\begin{tikzpicture}[node distance = 2cm, auto]
	\node [start] (1) {Start};
	\node [block, below of=1] (2) {Schritt 1};
	\node [block, below of=2] (3) {Schritt 2};
	\node [block, right of=3, node distance=7cm] (4) {Korrektur};
	\node [block, below of=3] (5) {Schritt 3};
	\node [decision, below of=5] (6) {Abbruch?};
	\node [start, below of=6, node distance = 3.5cm] (7) {Ergebnis};
	\path [line] (1) -- (2);
	\path [line] (2) -- (3);
	\path [line] (3) -- (5);
	\path [line] (5) -- (6);
	\path [line] (6) -| node [near start] {nein} (4);
	\path [line] (4) |- (2);
	\path [line] (6) -- node {ja}(7);
	\end{tikzpicture}
	\caption{Ablauf}
	\label{fig:Ablauf}                       
\end{figure}
\end{document}

Verfasst: Di 24. Mär 2020, 14:19
von Bartman
Mein Vorschlag für einige Änderungen:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{shapes,arrows.meta}

\begin{document}
\begin{tikzpicture}[
    node distance = 2cm, auto,
    thick,% Ersatz für die Option in allen Stilen
    start/.style = {% \tikzstyle ist veraltet
        draw, 
        rounded rectangle, 
        rounded corners, 
        minimum width=12em, 
        minimum height=3em, 
        align=center% Ersatz für text centered 
    },
    block/.style = {
        draw, 
        rounded corners, 
        minimum width=12em, 
        minimum height=3em, 
        align=center% s. o.
    },
    decision/.style = {
        draw, 
        diamond, 
        node distance = 3.5cm, 
        text width=6em, 
        align=flush center,% Ersatz für text badly centered 
        inner sep=0pt
    },
    line/.style = {
        draw, 
        -Stealth
    }
]
    \node [start] (1) {Start};
    \node [block, below of=1] (2) {Schritt 1};
    \node [block, below of=2] (3) {Schritt 2};
    \node [block, right of=3, node distance=7cm] (4) {Korrektur};
    \node [block, below of=3] (5) {Schritt 3};
    \node [decision, below of=5] (6) {Abbruch?};
    \node [start, below of=6, node distance = 3.5cm] (7) {Ergebnis};
    \path [line] 
        (1) edge (2)
        (2) edge (3)
        (3) edge (5)
        (5) edge (6)
    ;
    \path [line] (6) -| node [near start] {nein} (4);
    \path [line] (4) |- (2);
    \path [line] (6) -- node {ja} (7);
\end{tikzpicture}
\end{document}
Setze die Stile mit \tikzset in die Präambel, wenn Du sie in mehreren Zeichnungen benutzt.

Man könnte auch mit den Bibliotheken matrix und/oder positioning arbeiten, aber das wären nur Alternativen. Auch die chains-Bibliothek wäre für einen Teil der Zeichnung nützlich.

Verfasst: Di 24. Mär 2020, 14:33
von update.freak
vielen herzlichen Dank für die Verbesserungsvorschläge!
Eine Frage habe ich noch:

Lässt sich der Abstand von der "Entscheidungs-Raute" zu den Rechtecken (z.B. das obere Eck zu dem Rahmen des Rechtecks) genauso groß einstellen, wie die Abstände der Rechtecke (also Abstände der Rahmen) zueinander?

Verfasst: Di 24. Mär 2020, 14:46
von Bartman
Mit positioning geht es:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{shapes,arrows.meta,positioning}

\begin{document}
\begin{tikzpicture}[
%    node distance = 2cm, 
    auto,
    thick,
    start/.style = {
        draw, 
        rounded rectangle, 
        rounded corners, 
        minimum width=12em, 
        minimum height=3em, 
        align=center
    },
    block/.style = {
        draw, 
        rounded corners, 
        minimum width=12em, 
        minimum height=3em, 
        align=center
    },
    decision/.style = {
        draw, 
        diamond, 
%        node distance = 3.5cm, 
        text width=6em, 
        align=flush center,
        inner sep=0pt
    },
    line/.style = {
        draw, 
        -Stealth
    }
]
    \node [start] (1) {Start};
    \node [block, below=of 1] (2) {Schritt 1};
    \node [block, below=of 2] (3) {Schritt 2};
    \node [block, right=of 3] (4) {Korrektur};
    \node [block, below=of 3] (5) {Schritt 3};
    \node [decision, below=of 5] (6) {Abbruch?};
    \node [start, below=of 6] (7) {Ergebnis};
    \path [line] 
        (1) edge (2)
        (2) edge (3)
        (3) edge (5)
        (5) edge (6)
    ;
    \path [line] (6) -| node [near start] {nein} (4);
    \path [line] (4) |- (2);
    \path [line] (6) -- node {ja} (7);
\end{tikzpicture}
\end{document}

Verfasst: Di 24. Mär 2020, 14:55
von update.freak
super, genauso will ich es haben.
Dank dir!