![在 TikZ 中绘制垂直箭头](https://linux22.com/image/422686/%E5%9C%A8%20TikZ%20%E4%B8%AD%E7%BB%98%E5%88%B6%E5%9E%82%E7%9B%B4%E7%AE%AD%E5%A4%B4.png)
如何使用我的 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}