Tikz Pfeile und Blöcke

Tikz Pfeile und Blöcke

Ich schreibe gerade meine Bachelorarbeit mit LaTex und Tikz und stecke derzeit fest. Auch wenn mir meine älteren Beiträge bei vielen Dingen rund um Tikz sehr geholfen haben, gibt es für den unerfahrenen Benutzer immer wieder neue Schwierigkeiten...

Ich möchte ein Bild wie dieses hier erhalten, bei dem ich die Pfeile benennen und vor allem ihre Größe (oder Knotenabstände einzeln?) ändern kann.

Bildbeschreibung hier eingeben

Ich bin so weit gekommen, aber wie Sie sehen, weiß ich nicht, wie ich den Pfeil unten machen soll, der den Eingabeknoten mit dem dritten Block verbindet, und ich weiß nicht, wie ich die Distanz zwischen den drei Blöcken verkürzen kann. Hier ist mein Bild:

Bildbeschreibung hier eingeben

... und mein Code

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows, positioning, quotes}
\usetikzlibrary{arrows.meta, positioning, decorations.markings}
\usepackage{gensymb}
\usepackage{verbatim}

\begin{document}

\begin{figure}[htbp]
\centering

    \begin{tikzpicture}
        [block/.style={draw,minimum width=#1,minimum height=2em},
        block/.default=10em,high/.style={minimum height=3em},auto]
        %node distance=5em,auto]

        % Nodes
        \node (n0) {Input};
        \node[block=3em,high,right=of n0] (n1) {DiM};
        \node[block=3em,high,right=of n1] (n2) {Sensor};
        \node[block=3em,high,right=of n2] (n3) {CANoe};
        \node[right=of n3] (n4) {Measurement File};

        % Connections
        \draw[-stealth] (n0) edge[""] (n1);
        \draw[-stealth] (n1) edge[""] (n2);
        \draw[-stealth] (n2) edge[""] (n3);
        \draw[-stealth] (n3) edge[""] (n4);      

    \end{tikzpicture}

\caption{CANoe Measurement Network}
\label{fig:measurement_network}
\end{figure}
\end{document}

Ich habe alle wichtigen Presets geladen (Babel, Tikz usw.)

Ich wäre froh, wenn mir jemand helfen könnte! Vielen Dank, Leute, ich weiß die Hilfe wirklich zu schätzen!

Antwort1

Verwenden Sie node distancefür den Abstand in of. Um zusätzliche Pfeile zu zeichnen, warum zeichnen Sie nicht einfach „normale“ Pfeile?

BEARBEITEN:Um diesem Pfeil Text hinzuzufügen, müssen Sie kleine Änderungen vornehmen.

BEARBEITEN 2:Um den Startpunkt des Pfeils zu ändern, müssen Sie nur den Mittelpunkt des ersten Pfeils benennen. Das edgeist übrigens nicht notwendig, sondern einfach --ok.

\documentclass[tikz,margin=10]{standalone}
\usetikzlibrary{positioning,arrows.meta,quotes}
\begin{document}
\begin{tikzpicture}
  [block/.style={draw,minimum width=#1,minimum height=2em},
  block/.default=10em,high/.style={minimum height=3em},auto,
  node distance=5mm, % initially 1cm
  >=Stealth]
  %node distance=5em,auto]
  % Nodes
  \node (n0) {Input};
  \node[block=3em,high,right=1cm of n0] (n1) {DiM};
  \node[block=3em,high,right=of n1] (n2) {Sensor};
  \node[block=3em,high,right=of n2] (n3) {CANoe};
  \node[right=1cm of n3,align=center] (n4) {Measurement\\File};
  % Connections
  \draw[->] (n0) -- (n1) coordinate[midway] (start);
  \draw[->] (n1) -- (n2);
  \draw[->] (n2) -- (n3);
  \draw[->] (n3) -- (n4);
  \coordinate (x) at ([yshift=-1cm]n3.south);
  \coordinate (y) at (start |- x);
  \draw (start) -- (y) (x) edge[->] (n3.south) (x) edge["EXAMPLE"] (y);
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Sie können auch verwenden, \foreachum die Codegröße zu reduzieren. Um den Knotenabstand lokal zu ändern, verwenden Sie einfach, right=<some length> ofwie auch von @Fractal angegeben. Außerdem kann der Pfeil nach unten, rechts und oben wie folgt vereinfacht werden \draw[->] (n0) --++(0,-4em) -| (n3);:

\documentclass[12pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta}
\begin{document}

    \begin{tikzpicture}
        [block/.style={draw,minimum width=#1,minimum height=1em},
        block/.default=10em,high/.style={minimum height=3em},
        node distance=2em, > = Stealth]

        % Nodes
        \node (n0) {Input};
        \node[block=3em,high,right=3em of n0] (n1) {DiM};
        \node[block=3em,high,right=of n1] (n2) {Sensor};
        \node[block=3em,high,right=of n2] (n3) {CANoe};
        \node[right=3em of n3] (n4) {Measurement File};

        % Connections
        \foreach \i [count=\j from 1] in {0,...,3} 
          \draw[->] (n\i) -- (n\j);
        \draw[->] (n0) --++(0,-4em) -| (n3);
    \end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

Antwort3

Falls Sie keine Beschriftungen an den Kanten zwischen den Knoten in der Kette benötigen, können Sie den Code Ihres Blockschemas einfach mithilfe der chainsBibliothek zeichnen und für die Pfeile zwischen ihnen ein Makro verwenden join. Die Beschriftung des Pfeils wird nur auf dem Pfeil angezeigt, der „Input“ mit „CANoe“ verknüpft, und der Knoten wird entsprechend auf dem Pfeil positioniert:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                chains,
                positioning}
\begin{document}
    \begin{tikzpicture}[auto,
node distance = 7mm and 9mm,
  start chain = going right,
   box/.style = {draw, minimum size=3ex, inner sep=2mm,
                 on chain, join=by arr},
   arr/.style = {-Stealth}
                        ]
% Nodes
\node (n0) [box, draw=none]  {Input};
\node (n1) [box] {DiM};
\node (n2) [box] {Sensor};
\node (n3) [box] {CANoe};
\node (n4) [box, draw=none] (n4) {Measurement File};
% Connections
\coordinate[below=of n3] (aux);
\draw[arr]   (n0) |- node[pos=0.75] {forefeed} (aux) -- (n3);
    \end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Falls Sie alle Kanten beschriftet haben möchten, joinkönnen Sie diese durch Pfeile mit Beschriftungen ersetzen. Dafür ist es praktisch, quotesdie Bibliothek zu verwenden:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                chains,
                positioning,
                quotes}
\begin{document}
    \begin{tikzpicture}[auto,
node distance = 7mm and 11mm,
  start chain = going right,
   box/.style = {draw, minimum size=3ex, inner sep=2mm,
                 on chain},
every edge/.style = {draw, -Stealth}
                        ]
% Nodes
\node (n0) [box, draw=none]  {Input};
\node (n1) [box] {DiM};
\node (n2) [box] {Sensor};
\node (n3) [box] {CANoe};
\node (n4) [box, draw=none] (n4) {Measurement File};
% Connections
\coordinate[below=of n3] (aux);
\draw   (n0)    edge["{$u[n]$}"]    (n1)
        (n1)    edge["{$e[n]$}"]    (n2)
        (n2)    edge["{$v[n]$}"]    (n3)
        (n3)    edge["{$y[n]$}"]    (n4);
\draw   (n0) |-  node[pos=0.75] {forefeed} (aux) 
        (aux) edge (n3);
    \end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen