Tikz: diagrama de bloques usando Tikz

Tikz: diagrama de bloques usando Tikz

Soy nuevo en látex y tikz y quería dibujar un diagrama de bloques usándolos. Pero tengo algunos problemas. ¿Alguien puede ayudarme con las pocas dudas que tengo?

  1. ¿Cómo escribir 'este texto' para que esté en el medio del cuadro lleno y no tenga cuadros para texto0 y texto 6?

  2. ¿Cómo escribir texto entre los cuadros o encima de la flecha?

  3. ¿Hay alguna manera de controlar el tamaño de los cuadros individuales y tener diferentes formas de flecha?

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}

\usepackage{tikz}

\usetikzlibrary{shapes,arrows,positioning,fit,backgrounds}
\tikzstyle{block} = [draw, rectangle,  align=center, text width=2.4cm, text centered, minimum height=1.2cm, node distance=3.5cm,fill=white]
\tikzstyle{container} = [draw, rectangle, inner sep=0.3cm, fill=gray,minimum height=3cm]

\def\bottom#1#2{\hbox{\vbox to #1{\vfill\hbox{#2}}}}
\tikzset{
  mybackground/.style={execute at end picture={
      \begin{scope}[on background layer]
        \node[] at (current bounding box.north){\bottom{1cm} #1};
        \end{scope}
    }},
}
\begin{document}


\resizebox{14cm}{3cm}{%
\begin{tikzpicture}[>=latex',mybackground={This text}]
    \node [block, name= text0] (text0){text0};
    \node [block, right of=text0](text1) {text1};
    \node [block, right of=text1] (text2) {text2};
    \node [block, right of=text2] (text3) {text3};
    \node [block, right of=text3] (text4) {text4};
    \node [block, right of=text4] (text5) {text5};
     \node [block, right of=text5] (text6) {text6};
    \begin{scope}[on background layer]
    \node [container,fit= (text3) (text4)] (container) {};
     \end{scope}
    \draw [->] (text0) -- (text1);
    \draw [->] (text1) -- (text2);
    \draw [->] (text2) -- node {}(text3);
    \draw [->] (text3) -- node {}(text4);
    \draw [->] (text4) -- node {} (text5);
    \draw [->] (text5) -- node {} (text6);

\end{tikzpicture}

}


\end{document}

ingrese la descripción de la imagen aquí

Respuesta1

Esperemos que el siguiente ejemplo cumpla con todas sus solicitudes:

ingrese la descripción de la imagen aquí

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                backgrounds,
                chains,
                fit,
                quotes}

\begin{document}
    \begin{tikzpicture}[auto,
    node distance = 15mm,
        start chain = A going right,
     block/.style = {draw, fill=white,
                     text width=#1, minimum height=12mm, align=center,
                     outer sep=0pt, on chain},
     block/.default = 18mm,
 container/.style = {draw, fill=gray!50,
                     inner xsep=2mm, inner ysep=7mm},
                        ]
\node   [block] {text 0};    % block name is A-1
\node   [block] {text 1};
\node   [block] {text 2};
\node   [block=22mm] {text 3};    % block name is A-4
\node   [block=11mm] {text 4};    % block name is A-5
\node   [block] {text 5};
\node   [block] {text 6};    % block name is A-7
%
\scoped[on background layer]
    \node [container, label={[anchor=north]This text},
           fit= (A-4) (A-5)] (container) {};
\draw [-Stealth]
    (A-1) edge ["text 1"] (A-2)    % text on arrow is between " and "
    (A-2) edge ["text 2"] (A-3)
    (A-3) edge ["text 3"] (A-4)
    (A-4) edge ["text 4"] (A-5)
    (A-5) edge ["text 5"] (A-6)
    (A-6) edge ["text 5"] (A-7);
    \end{tikzpicture}
\end{document}
  • Dado que su diagrama de bloques es simple, todos los bloques están en cadena, sugiero usar chainsla biblioteca para su posicionamiento (se supone que las distancias entre ellos son iguales; sin embargo, si algunos de ellos son diferentes, esto se puede cambiar con el uso local).right=of <name previous block>
  • para el texto en las flechas entre bloques es fácil de escribir con la ayuda de la biblioteca quotescomo(<node name i>) edge [" your text"] (<node name i+1>)
  • ¡No pude entender tu primera pregunta, lo siento!
  • ¡no lo uses \resizebox! conduce a una mala apariencia de la imagen. en lugar de cambiar el tamaño del bloque, la fuente y las distancias entre bloques
  • Con el uso, arrows.metapuede simplemente ajustar el tamaño de la punta de la flecha (largo, ancho, ángulo, etc.). para obtener más detalles, consulte "tikz & pgf manual, v 3.0.1a", sección "16.5 Referencia: puntas de flecha", página 201. En mwe a continuación uso valores predeterminados, sin embargo, puede experimentar con ellos, por ejemplo (consulte la página 209 del manual mencionado). :

\draw[-{Stealth[length=2mm,width=3mm,inset=0.5mm]}] ...

información relacionada