Flussdiagramm mit TikZ

Tabellen und Grafiken erstellen und anordnen


update.freak
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 86
Registriert: Mo 9. Dez 2019, 21:36

Flussdiagramm mit TikZ

Beitrag 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}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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.
Zuletzt geändert von Bartman am Di 24. Mär 2020, 14:34, insgesamt 1-mal geändert.

update.freak
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 86
Registriert: Mo 9. Dez 2019, 21:36

Beitrag 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?

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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}

update.freak
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 86
Registriert: Mo 9. Dez 2019, 21:36

Beitrag von update.freak »

super, genauso will ich es haben.
Dank dir!

Antworten