Flechas y bloques Tikz

Flechas y bloques Tikz

Actualmente estoy escribiendo mi tesis de licenciatura usando LaTex y Tikz y actualmente estoy estancado. Aunque mis publicaciones anteriores me ayudaron mucho con tantas cosas relacionadas con tikz, siempre surgen nuevas dificultades para el usuario inexperto...

Me gustaría obtener una imagen como esta donde pueda nombrar las flechas y, lo más importante, cambiar su tamaño (¿o las distancias de los nodos individualmente?).

ingrese la descripción de la imagen aquí

He llegado hasta aquí pero como puedes ver no sé cómo hacer la flecha de abajo que conecta el nodo de entrada con el tercer bloque y no sé cómo acortar la distancia entre los tres bloques. Aquí está mi foto:

ingrese la descripción de la imagen aquí

... y mi código

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

He cargado todos los ajustes preestablecidos importantes (babel, tikz, etc.)

¡Me alegraría que alguien pudiera ayudarme! ¡Gracias chicos, realmente aprecio la ayuda!

Respuesta1

Úselo node distancepara el espaciado en of. Para dibujar flechas adicionales, ¿por qué no dibujar simplemente flechas "normales"?

EDITAR:Para agregar texto a esa flecha, debes modificar un poco.

EDITAR 2:Para cambiar el punto inicial de la flecha, sólo tienes que nombrar el punto medio de la primera flecha. Por cierto, edgeno es necesario, simplemente --está bien.

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

ingrese la descripción de la imagen aquí

Respuesta2

También puede utilizarlo \foreachpara reducir el tamaño del código. Para cambiar la distancia del nodo localmente, simplemente use right=<some length> ofcomo también lo señala @Fractal. Además, la flecha abajo-derecha-arriba se puede simplificar como \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}

ingrese la descripción de la imagen aquí

Respuesta3

En caso de que no necesite etiquetas en los bordes entre los nodos de la cadena, entonces el código de su esquema de bloques se puede dibujar de forma sencilla mediante el uso de la chainsbiblioteca y para las flechas entre ellos utilice la macro join. La etiqueta del anuncio de flecha solo en la flecha que vincula "entrada" con "CANoe" es un anuncio con el nodo colocado en consecuencia en la flecha:

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

ingrese la descripción de la imagen aquí

En el caso de que desee que las etiquetas tengan todos los bordes, joinpuede reemplazarlas con flechas con etiquetas. Para ellos es útil utilizar quotesla biblioteca:

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

ingrese la descripción de la imagen aquí

información relacionada