Tikz: Blockdiagramm mit Tikz

Tikz: Blockdiagramm mit Tikz

Ich bin neu bei Latex und Tikz und wollte damit ein Blockdiagramm zeichnen. Aber ich habe einige Probleme. Kann mir jemand bei meinen wenigen Fragen helfen?

  1. Wie schreibe ich „diesen Text“, sodass er sich in der Mitte des ausgefüllten Felds befindet und keine Felder für Text0 und Text6 vorhanden sind?

  2. Wie schreibe ich Text zwischen die Kästchen oder über den Pfeil?

  3. Gibt es eine Möglichkeit, die Größe einzelner Kästchen zu steuern und unterschiedliche Pfeilformen zu erhalten?

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

Bildbeschreibung hier eingeben

Antwort1

hoffentlich erfüllt das folgende Beispiel alle Ihre Anforderungen:

Bildbeschreibung hier eingeben

\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}
  • Da Ihr Blockdiagramm einfach ist und alle Blöcke in einer Kette angeordnet sind, schlage ich vor, chainsfür ihre Positionierung eine Bibliothek zu verwenden (vorausgesetzt, die Abstände zwischen ihnen sind gleich, wenn jedoch einige unterschiedlich sind, kann dies durch lokale Verwendung geändert werden).right=of <name previous block>
  • für Text auf Pfeilen zwischen Blöcken ist einfach, mit Hilfe der Bibliothek zu schreiben quotesals(<node name i>) edge [" your text"] (<node name i+1>)
  • Ich habe Ihre erste Frage nicht verstanden, tut mir leid!!
  • nicht verwenden \resizebox! Das führt zu einem schlechten Bildaussehen. Passen Sie stattdessen die Blockgröße, die Schriftart und die Abstände zwischen den Blöcken an.
  • Mithilfe von arrows.metakönnen Sie einfach die Größe der Pfeilspitze anpassen (Länge, Breite, Winkel usw.). Einzelheiten finden Sie im „Tikz- und PGF-Handbuch, V. 3.0.1a“, Abschnitt „16.5 Referenz: Pfeilspitzen“, Seite 201. Im Folgenden verwende ich in MWE Standardwerte, Sie können jedoch beispielsweise damit experimentieren (siehe Seite 209 des genannten Handbuchs):

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

verwandte Informationen