在 TikZ 中绘制垂直箭头

在 TikZ 中绘制垂直箭头

如何使用我的 tikzpicture 绘制垂直直箭头

\draw[arrow](position1)--node{text}(position2);

我的图表看起来像

\tikzstyle{kaesten}=[rectangle, rounded corners, minimum width=3cm, minimum height=1cm, text centered, text width=4cm, text=TUMWhite, fill=TUMBlue]

\tikzstyle{pdm}=[rectangle, rounded corners, minimum width=5cm, minimum height=2cm, text centered, text=TUMWhite, fill=TUMBlue1]

\tikzstyle{arrow}=[thick,->,>=stealth]
\tikzstyle{arrow_beidseitig}=[thick,<->,>=stealth]

\begin{figure}[H]
\centering
\begin{tikzpicture}[node distance=3.5cm]
\node(aenderungsverwaltung)[kaesten, scale=0.7]{Änderungsverwaltung};
\node(verwaltung)[kaesten, below of=aenderungsverwaltung, scale=0.7]{Verwaltung freigegebener Dokumente};
\node(freigabe)[kaesten, left of=verwaltung, scale=0.7]{Freigabe};
\node(konstruktion)[kaesten, left of=freigabe, scale=0.7]{Konstruktion};
\node(fertigungsvorbereitung)[kaesten, right of=verwaltung, scale=0.7]{Fertigungsvorbereitung};
\node(fertigung)[kaesten, right of=fertigungsvorbereitung, scale=0.7]{Fertigung};
\node(pdm)[pdm, text width=14cm, below of=verwaltung,scale=0.7]{Product Data Management (PDM)
\begin{itemize}
    \color{TUMWhite}
    \item Archivierung
    \item Datenmanagement
    \item Prozessmanagement
    \item dokumentenorientiert
\end{itemize}
};

\footnotesize
\draw [arrow] (aenderungsverwaltung) -| node[align=left, anchor=south]{Änderungsauftrag} (konstruktion);
\draw[arrow] (konstruktion) -- (freigabe);
\draw[arrow] (freigabe)--(verwaltung);
\draw[arrow] (verwaltung)--(fertigungsvorbereitung);
\draw[arrow] (fertigungsvorbereitung)--(fertigung);
\draw[arrow_beidseitig] (konstruktion)|-node[align=left, anchor=east]{\hspace*{-1.5cm}Laufende \\ \hspace*{-1.5cm}Arbeiten}(pdm);
\draw[arrow_beidseitig] (freigabe)--node[align=left, anchor=south west]{\hspace*{-3cm}Freigegebene \\ \hspace*{-3cm}Konstruktion}(pdm);
\draw[arrow_beidseitig] (verwaltung)--node[align=left, anchor=south east]{\hspace*{4cm}Zugriff auf \\ \hspace*{4cm}Konstruktionen}(pdm);
\draw[arrow_beidseitig] (fertigungsvorbereitung)--node[align=left]{\hspace*{4cm}Freigegebene \\ \hspace*{4cm}Konstruktionen}(pdm);
\draw[arrow] (fertigungsvorbereitung)|-(aenderungsverwaltung);
\draw[arrow] (fertigung)|-node[anchor=south]{Änderungsanforderung}(aenderungsverwaltung);



\end{tikzpicture}
\caption{Informationsfluss in Konstruktion und Entwicklung}
\label{fig:informationsfluss}
\end{figure}

在此处输入图片描述

我如何调整代码以获得如下图所示的直线

在此处输入图片描述

非常感谢你的帮助。

答案1

TUM..用标准颜色名称替换了您的颜色,因为您没有提供那些定义。

要回答您的具体问题,请使用例如(freigabe|-pdm.north)作为结束坐标。请参阅TikZ:箭头的 |- 符号到底起什么作用?对于垂直坐标的解释。


在下面的代码中,我还对一些东西进行了现代化改造。一般来说,\tikzset{foo/.style={..},bar/.style={..}}建议使用 而不是\tikzstyle{foo}=[..]right of=..语法已被弃用,而是加载positioning库并使用right=of ..(PGF/TikZ 中“right of=”和“right=of”之间的区别)。

最后,除了使用 之类的东西node[left] {\hspace{<length>}...,还将长度传递给left,即node[left=5mm] {...。也可以使用例如node[xshift=1cm,yshift=2cm] ..

在此处输入图片描述

\documentclass[border=5mm]{standalone}  
\usepackage{tikz}  
\usetikzlibrary{positioning}
\tikzset{
 kaesten/.style={rectangle, rounded corners, minimum width=3cm, minimum height=1cm, text centered, text width=4cm, text=white, fill=blue},
 pdm/.style={rectangle, rounded corners, minimum width=5cm, minimum height=2cm, text centered, text=white, fill=blue},
 arrow/.style={thick,->,>=stealth},
 arrow_beidseitig/.style={thick,<->,>=stealth}
}
\begin{document}  

\begin{tikzpicture}[node distance=2.5cm and 1cm]
\node(aenderungsverwaltung)[kaesten, scale=0.7]{Änderungsverwaltung};
\node(verwaltung)[kaesten, below=of aenderungsverwaltung, scale=0.7]{Verwaltung freigegebener Dokumente};
\node(freigabe)[kaesten, left=of verwaltung, scale=0.7]{Freigabe};
\node(konstruktion)[kaesten, left=of freigabe, scale=0.7]{Konstruktion};
\node(fertigungsvorbereitung)[kaesten, right=of verwaltung, scale=0.7]{Fertigungsvorbereitung};
\node(fertigung)[kaesten, right=of fertigungsvorbereitung, scale=0.7]{Fertigung};
\node(pdm)[pdm, text width=14cm, below=of verwaltung,scale=0.7]{Product Data Management (PDM)
\begin{itemize}
%    \color{TUMWhite}
    \item Archivierung
    \item Datenmanagement
    \item Prozessmanagement
    \item dokumentenorientiert
\end{itemize}
};

\footnotesize
\draw [arrow] (aenderungsverwaltung) -| node[align=left, anchor=south]{Änderungsauftrag} (konstruktion);
\draw[arrow] (konstruktion) -- (freigabe);
\draw[arrow] (freigabe)--(verwaltung);
\draw[arrow] (verwaltung)--(fertigungsvorbereitung);
\draw[arrow] (fertigungsvorbereitung)--(fertigung);

\draw[arrow_beidseitig] (konstruktion)|-node[align=left, left]{Laufende \\ Arbeiten}(pdm);
\draw[arrow_beidseitig] (freigabe)--node[align=left, left]{Freigegebene \\ Konstruktion}(freigabe|-pdm.north);
\draw[arrow_beidseitig] (verwaltung)--node[align=left, left]{Zugriff auf \\ Konstruktionen}(pdm);
\draw[arrow_beidseitig] (fertigungsvorbereitung)--node[align=left,left]{Freigegebene \\ Konstruktionen}(fertigungsvorbereitung|-pdm.north);
\draw[arrow] (fertigungsvorbereitung)|-(aenderungsverwaltung);
\draw[arrow] (fertigung)|-node[anchor=south]{Änderungsanforderung}(aenderungsverwaltung);
\end{tikzpicture}
\end{document}  

答案2

主要与主题无关(其他人认为@Alenanno 评论中哪些内容值得考虑)@Torbjørn T. 的回答 (+1):

\documentclass[tikz, margin=3.14159mm]{standalone}
\usetikzlibrary{arrows.meta,
                chains,
                fit,
                positioning,
                quotes}
\usepackage{enumitem}

\begin{document}
\tikzset{
kaesten/.style args = {#1/#2}{rectangle, rounded corners, fill=#1,
                  text width=#2, minimum height=1cm,
                  align=center, text=yellow},
kaesten/.default = cyan!90!black/42mm,
    arr/.style = {-Stealth, semithick},
    alr/.style = {Stealth-Stealth, semithick},
    lbl/.style = {font=\footnotesize, align=left, #1},% #1=positioing
    lbl/.default = left
        }

    \begin{tikzpicture}[scale=0.7,
node distance = 12mm and 3mm,
  start chain = A going right
                        ]
    \begin{scope}[nodes={kaesten, on chain=A, join=by arr}]
\node   {Konstruktion};     % name: A-1
\node   {Freigabe};
\node   {Verwaltung freigegebener Dokumente};
\node   {Fertigungsvorbereitung};
\node   {Fertigung};        % name: A-5
    \end{scope}
\node (A-0) [kaesten, 
             above=of A-3] {Änderungsverwaltung};

\node (pdm) [kaesten=cyan!80!black/42mm,
             fit=(A-2) (A-4),
             inner xsep=0ex, inner ysep=3.3ex, 
             below=of A-3] {\hfil\textbf{Product Data Management (PDM)}
\begin{itemize}[nosep]
    \item Archivierung
    \item Datenmanagement
    \item Prozessmanagement
    \item dokumentenorientiert
\end{itemize}
};
% above chain
\draw [arr] (A-0) -| node[lbl=above] {Änderungsauftrag}      (A-1);
\draw [arr] (A-5) |- node[lbl=above] {Änderungsanforderung}  (A-0);
\draw       (A-4) -- (A-4 |- A-0);
% below chain
\draw[alr] (A-1) |- node[lbl]  {Laufende \\ Arbeiten}  (pdm);
%
\draw[alr] (A-2) -- node[lbl]  {Freigegebene \\ Konstruktionen} (A-2 |- pdm.north);
\draw[alr] (A-3) -- node[lbl]  {Zugriff auf  \\ Konstruktion}   (A-3 |- pdm.north);
\draw[alr] (A-4) -- node[lbl]  {Freigegebene \\ Konstruktionen} (A-4 |- pdm.north);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容