如何在 TiKz 中正确绘制具有多个输入的框图

如何在 TiKz 中正确绘制具有多个输入的框图

我想重新创建以下框图。但仍然不知道如何正确定位块和箭头。我尝试了几种方法,到目前为止,这就是我所得到的。任何帮助都非常感谢。

f 和 g 框图

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{bm}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, positioning, calc}

\begin{document}

\tikzstyle{input} = [coordinate]
\tikzstyle{output} = [coordinate]

\begin{frame}{}

\begin{center}
\begin{tikzpicture}
    \node (input) at (0,0) {$\mathbf{x}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, right = 1cm of input, name=f]{$\mathbf{f}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, above right = -5mm and 4.5cm of input, name=g]{$\mathbf{g}$};
    \node [output, right = 1cm of g, name=z]{};
    \node [right = 0.1cm of z]{$\mathbf{z}$};
    \node (input) [above left = 0.3cm and 0.6cm of g, name=w]{$\mathbf{w}$};

    % Draw the connecting arrows and labels
    \draw [->, very thick] (input) -- (f);
    \draw [->, very thick] (f) -- (g) node [midway, above] {$\mathbf{y}$};
    \draw [->, very thick] (g) -- (z);
    \draw [->, very thick] (w) -- (g);
\end{tikzpicture}
\end{center}

\end{frame}

\end{document}

在此处输入图片描述

答案1

看看以下解决方案是否可以接受:

\documentclass[border=3mm,tikz]{standalone}
\usepackage{bm}
\usetikzlibrary{shapes, arrows, positioning, calc}
\tikzstyle{input} = [coordinate]
\tikzstyle{output} = [coordinate]
\begin{document}
\begin{tikzpicture}
    \node (input) at (0,0) {$\mathbf{x}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, right = 1cm of input, name=f]{$\mathbf{f}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, right = 4.5cm of input, name=g]{$\mathbf{g}$};
    \node [output, right = 1cm of g, name=z]{};
    \node [right = 0.1cm of z]{$\mathbf{z}$};

    % Draw the connecting arrows and labels
    \draw [->, very thick] (input) -- (f);
    \draw [->, very thick] (f) -- (g) node [midway, below] {$\mathbf{y}$};
    \draw [->, very thick] (g) -- (z);
    \begin{scope}[transform canvas={yshift=+3mm}]
        \draw [->, very thick] ($(f)!0.4!(g)$) -- (g) node [midway, above] {$\mathbf{w}$};
    \end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

像这样?

在此处输入图片描述

\documentclass{beamer}
\usetheme{Boadilla}
%\usepackage[utf8]{inputenc}
%\usepackage{amsmath}
\usepackage{bm}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, 
                calc, 
                positioning,
                quotes}

\begin{document}
\begin{frame}
\frametitle{Block diagram}
\begin{center}
    \begin{tikzpicture}[
node distance = 4mm and 16mm,
   arr/.style = {very thick, -Latex},
   box/.style = {draw, semithick, fill=blue!20, 
                 minimum height=3.0em, minimum width=4.5em},
                        ]
\coordinate (in);
\node (f) [box, right=of in]                    {$\bf{f}$};
\node (g) [box, above right=of f.south east]    {$\bf{g}$};
\coordinate[right = of g]    (out);
%
\draw[arr]   (in) to ["$\bm{x}$"]   (f);
\draw[arr]   (f)  to ["$\bm{y}$" '] (f -| g.west);
\draw[arr]   (g)  to ["$\bm{z}$"]   (out);
%  
\coordinate[left=12mm of g.west]     (w);
\draw[arr]   (w)  to ["$\bm{w}$"]   (g);
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}

答案3

另一种选择

\documentclass[border=3mm,tikz]{standalone}
\usepackage{bm}
\usetikzlibrary{arrows, positioning, calc}
\begin{document}
\begin{tikzpicture}[
    box/.style={draw, fill=blue!20, minimum height=3em, minimum width=4.5em},
    link/.style={->,very thick}]
    \node [box] (f) {$\mathbf{f}$};
    \node [box, right=2cm of f] (g) {$\mathbf{g}$};
     \draw[link, <-] (f.west)--++(180:1cm) node[left]{$\mathbf{x}$};
     \draw[link] (f)--($(f)!.5!(g)$) coordinate (aux1)|- node[below, pos=.75]{$\mathbf{y}$}($(g.south west)!.3333!(g.north west)$);
     \coordinate (aux2) at ($(g.north west)!.3333!(g.south west)$);
     \draw[link] (aux1|-aux2) --  node[above]{$\mathbf{w}$} (aux2);
     \draw[link] (g.east)--++(0:1cm) node[right]{$\mathbf{z}$};
     \end{tikzpicture}
\end{document}

在此处输入图片描述

答案4

另一个

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{bm}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, positioning, calc}

\begin{document}

\tikzstyle{input} = [coordinate]
\tikzstyle{output} = [coordinate]

\begin{frame}{}

\begin{center}
\begin{tikzpicture}
    \node (input) at (0,0) {$\mathbf{x}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, right = 1cm of input, name=f]{$\mathbf{f}$};
    \node [draw, fill=blue!20, rectangle, 
    minimum height=3.0em, minimum width=4.5em, above right = -5mm and 4.5cm of input, name=g]{$\mathbf{g}$};
    \node [output, right = 1cm of g, name=z]{};
    \node [right = 0.1cm of z]{$\mathbf{z}$};
    \node (input) [above left = 0.3cm and 0.6cm of g, name=w]{$\mathbf{w}$};

    % Draw the connecting arrows and labels
    \draw [->, very thick] (input) -- (f);
    \draw [->, very thick] (f) -|($(f)!0.5!(g.190)$) |- (g.190) node [pos=0.2, below] {$\mathbf{y}$}; %modif1
    \draw [->, very thick] (g) -- (z);
    \draw [->, very thick] (w) |- (g.160);  %modif2
\end{tikzpicture}
\end{center}

\end{frame}

\end{document}

在此处输入图片描述

相关内容