在 tikzpicture 中手动移动节点

在 tikzpicture 中手动移动节点

我想创建以下图表(抱歉质量较差) 在此处输入图片描述

我想移动第 3 级(Buchhaltung、Einkauf、Vertrieb 等)中的节点,并且像图片中那样将第 4 级中的节点稍微向右移动,同时我还希望第 2 级(Produktion、Forschung und Entwicklung)中的节点位于节点“Technischer Bereich”下方的中心(参见图片)。

\begin{figure}
\centering
\begin{tikzpicture}[auto, node distance = 0.4cm, thick,
  every node/.style = {rectangle, font = \sffamily, white,
    top color = green!90!black, bottom color = green!60!black,
    text width = 2.4cm, align = center, minimum height = 1cm}]
  \node (GF)                                 {\textbf{GF}\\Geschäftsführer};
  \coordinate [below = 0.9cm of GF] (E1);
  \coordinate [below = 1.6cm of GF] (E2);
  \coordinate [below = 2.3cm of GF] (E3);
  \coordinate [below = 3cm of GF]   (E4);
  \node (Kbereich) [left  = 22mm of E1]  {Kaufm\"ann- \\ ischer Bereich};
  \node (Tbereich)        [right = 22mm of E1]  {Technischer \\ Bereich};
  \node (Einkauf)        [below = of Kbereich] {Einkauf};
  \node (Absatz) [ right = of Einkauf]{Absatz};
  \node (Verwaltung)   [left  = of Einkauf]        {Verwaltung};
  \node (Produktion)     [below = of Tbereich]        {Produktion};
  \node (FuE) [right = of Produktion]     {Forschung \& \\ Entwicklung};
  \node (Buchhaltung)     [below = of Verwaltung]        {Buchhaltung};
  \node (Personalwesen)     [below = of Buchhaltung]        {Personalwesen};
  \draw [green!60!black,thick]
    (GF)   -| (Kbereich)
    (GF)   -| (Tbereich) 
    (Kbereich) -| (Verwaltung)
    (Kbereich) -- (Einkauf)
    (Kbereich) -| (Absatz)
    (Tbereich) -- (Produktion)
    (Tbereich) -| (FuE)
    (Verwaltung) |- (Buchhaltung);
\end{tikzpicture}
\end{figure}

有人能告诉我如何解决这个问题吗?非常感谢!

答案1

请记住,该positioning库允许您使用 将相对节点放置在具有所有方向位移的其他节点上above/below left/right = above/below_displacement and left/right_displacement of node_name,要进行手动调整,您必须放弃自动选项,为了不写入每个位移,我建议创建 3 个或更多变量以统一方式控制所有级别或逐级别的分离;然后对于连接器,使用时间坐标在时间点连接节点;最后,我还修改了代码以使其更具可读性,记得使用换行符和缩进,这样您就不会迷失在代码中,最后我根据喜好添加了阴影,如果每个都在一行中,您可以在样式中激活或停用修饰符,将它们作为注释。

结果:

在此处输入图片描述

梅威瑟:

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{positioning,shadows.blur}


\begin{document}
    \def\Ysep{0.5cm}
    \def\Xsep{0.5cm}
    \def\Wbox{2.5cm}    
    \begin{tikzpicture}[
            thick,
            %auto, %not needed for manual manipulation
            every node/.style = {
                rectangle,
                font = \sffamily,
                white,
                top color = green!90!black,
                bottom color = green!60!black,
                text width = 2.5cm,
                align = center,
                minimum width = \Wbox,
                minimum height = 1cm,
                blur shadow,
                inner sep=0 % to obtain real width of box nodes
            }
        ]
        
        \node(GF){\textbf{GF}\\Geschäftsführer};
            \node[below left=\Ysep and \Xsep of GF](Kbereich){Kaufm\"ann- \\ ischer Bereich};
                \node[below left=\Ysep and \Xsep of Kbereich] (Verwaltung){Verwaltung};
                    \node[below right=\Ysep and \Xsep/2 of Verwaltung.south west] (Buchhaltung){Buchhaltung};
                    \node[below=\Ysep of Buchhaltung] (Personalwesen){Personalwesen};
                \node[below =\Ysep of Kbereich] (Einkauf){Einkauf};
                    \node[below right=\Ysep and \Xsep/2 of Einkauf.south west] (a){a};
                    \node[below=\Ysep of a] (b){b\\b};
                \node[below right=\Ysep and \Xsep of Kbereich] (Absatz){Absatz};
                    \node[below right=\Ysep and \Xsep/2 of Absatz.south west] (c){c};
                    \node[below=\Ysep of c] (d){d\\d};
            \node[below right=\Ysep and \Xsep*1.5+\Wbox/2 of GF] (Tbereich) {Technischer \\ Bereich};
                \node[below left=\Ysep and \Xsep/2 of Tbereich.-90] (Produktion){Produktion};
                    \node[below right=\Ysep and \Xsep/2 of Produktion.south west] (e){e};
                    \node[below=\Ysep of e] (f){f\\f};
                \node[below right=\Ysep and \Xsep/2 of Tbereich.-90] (FuE){Forschung \& \\ Entwicklung};
                    \node[below right=\Ysep and \Xsep/2 of FuE.south west] (g){g};
                    \node[below=\Ysep of g] (h){h\\h};
        \draw [green!60!black,thick]
            (GF.-90)--++(0,-\Ysep/2) coordinate (temp) -| (Kbereich)
            (temp)   -| (Tbereich) 
            (Kbereich.-90)--++(0,-\Ysep/2) coordinate (temp) -| (Verwaltung)
            (temp) -- (Einkauf)
            (temp) -| (Absatz)
            (Tbereich.-90) --++(0,-\Ysep/2) coordinate (temp) -| (Produktion)
            (temp) -| (FuE)
            (Verwaltung.south west)++(\Xsep/4,0) coordinate (temp) -- (temp|-Buchhaltung) coordinate (temp) -- (Buchhaltung)
            (temp) |- (Personalwesen)
            (Einkauf.south west)++(\Xsep/4,0) coordinate (temp) -- (temp|-a) coordinate (temp) -- (a)
            (temp) |- (b)
            (Absatz.south west)++(\Xsep/4,0) coordinate (temp) -- (temp|-c) coordinate (temp) -- (c)
            (temp) |- (d)
            (Produktion.south west)++(\Xsep/4,0) coordinate (temp) -- (temp|-e) coordinate (temp) -- (e)
            (temp) |- (f)
            (FuE.south west)++(\Xsep/4,0) coordinate (temp) -- (temp|-g) coordinate (temp) -- (g)
            (temp) |- (h);
    \end{tikzpicture}

\end{document}

答案2

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}

\begin{document}
\begin{tikzpicture}[auto, node distance = 0.4cm, thick,
  every node/.style = {rectangle, font = \sffamily, white,
    top color = green!90!black, bottom color = green!60!black,
    text width = 2.4cm, align = center, minimum height = 1cm}]
  \node (GF)                                 {\textbf{GF}\\Geschäftsführer};
  \coordinate [below = 0.9cm of GF] (E1);
  \coordinate [below = 1.6cm of GF] (E2);
  \coordinate [below = 2.3cm of GF] (E3);
  \coordinate [below = 3cm of GF]   (E4);
  \node (Kbereich) [left  = 22mm of E1]  {Kaufm\"ann- \\ ischer Bereich};
  \node (Tbereich)        [right = 30mm of E1]  {Technischer \\ Bereich};
  \node (Einkauf)        [below = of Kbereich] {Einkauf};
  \node (Absatz) [ right = of Einkauf]{Absatz};
  \node (Verwaltung)   [left  = of Einkauf]        {Verwaltung};
  \node (Produktion)     [below= of Tbereich,xshift=-10ex]        {Produktion};
  \node (FuE) [right = of Produktion]     {Forschung \& \\ Entwicklung};
  \node (Buchhaltung)     [below= of Verwaltung,xshift=2ex]        {Buchhaltung};
  \node (Personalwesen)     [below = of Buchhaltung]        {Personalwesen};
  \draw [green!60!black,thick]
    (GF)   -| (Kbereich)
    (GF)   -| (Tbereich) 
    (Kbereich) -| (Verwaltung)
    (Kbereich) -- (Einkauf)
    (Kbereich) -| (Absatz)
    (Tbereich) |- ($(Tbereich.south)!0.5!(Produktion.north)$) -| (Produktion.north)
    (Tbereich) |- ($(Tbereich.south)!0.5!(FuE.north)$) -| (FuE.north)
    ([xshift=-1ex]Buchhaltung.west|-Verwaltung.south) |- (Buchhaltung.west)
    ([xshift=-1ex]Personalwesen.west|-Verwaltung.south) |- (Personalwesen.west);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容