![Fehlerbaum mit TikZ: Unterbaum auf mehreren Ebenen zeichnen](https://rvso.com/image/286350/Fehlerbaum%20mit%20TikZ%3A%20Unterbaum%20auf%20mehreren%20Ebenen%20zeichnen.png)
Auf den Zeilen des Fehlerbaums im TiKZ-Beispiel (http://www.texample.net/tikz/examples/fault-tree/), habe ich den folgenden Fehlerbaum erstellt
\node (g1) [event] {Project fails \\ E0}
child {node (e1) {No legal permit \\(E1)}
child {node (e11) {No legal permit A \\ (E11)}}
child {node (e12) {No legal permit B \\ (E12)}}
child {node (e13) {No legal permit C \\ (E13)}}
}
child {node (e2) {No financing \\(E2)}
child {node (e21) {No financing A \\ (E21)}}
child {node (e22) {No financing B \\ (E22)}}
child {node (e23) {No financing C \\ (E23)}}
}
child {node (e3) {No collaboration}
child {node (e31) {Low incentive}}
child {node (e32) {Low trust}}
};
Allerdings überlappen sich die Knoten des Baums. Ich habe versucht, den Abstand zwischen den Knoten zu verringern, aber das sieht in diesem Fall nicht so elegant aus. Gibt es eine Möglichkeit, dass der Teilbaum E2 auf einer niedrigeren Ebene liegt als der Teilbaum E1?
Antwort1
Ist es das, wonach Sie suchen? Es scheint, dass Ihr Code nicht das Bild widerspiegelt, das Sie gepostet haben. Diese Lösung hat versucht, das gewünschte Bild zu generieren und den Teilbaum E2 tiefer als den Teilbaum E1 zu verschieben. Dies wird durch die Verwendung der Option [level distance=xx]
am e2
Knoten erreicht.
child[level distance=70mm] {node (e2) {No financing \\(E2)}
Dieselbe Idee gilt, wenn der E3-Teilbaum ein wenig nach links verschoben werden soll. Aber [sibling distance=xx]
hier wird verwendet
child[sibling distance=30mm] {node (e3) {No collaboration}
Wenn keine Tore erforderlich sind, entfernen Sie den Code im letzten Teil.
Code
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees,calc,shadings,shapes.gates.logic.US,positioning,arrows}
\begin{document}
\begin{tikzpicture}
[
% Gates and symbols style
and/.style={and gate US,thick,draw,fill=red!60,rotate=90,
anchor=east,xshift=-1mm},
or/.style={or gate US,thick,draw,fill=blue!60,rotate=90,
anchor=east,xshift=-1mm},
be/.style={circle,thick,draw,fill=green!60,anchor=north,
minimum width=0.7cm},
% Label style
label distance=3mm, every label/.style={blue},
% Event style
event/.style={rectangle,thick,draw,fill=yellow!20,text width=2cm, text centered,font=\sffamily,anchor=north},
% Children and edges style
edge from parent/.style={very thick,draw=black!70},
edge from parent path={(\tikzparentnode.south) -- ++(0,-1.05cm)-| (\tikzchildnode.north)},
level 1/.style={sibling distance=5cm,level distance=1.5cm, growth parent anchor=south,nodes=event},
level 2/.style={sibling distance=3cm, level distance=2cm},
level 3/.style={sibling distance=3cm},
level 4/.style={sibling distance=3cm}
]
%% Draw events and edges
\node (g1) [event] {Project fails \\ E0}
child{node (e1) {No legal permit \\(E1)}
child {node (e11) {No legal permit A \\ (E11)}}
child {node (e12) {No legal permit B \\ (E12)}}
child {node (e13) {No legal permit C \\ (E13)}}
}
child[level distance=70mm] {node (e2) {No financing \\(E2)}
child {node (e21) {No financing A \\ (E21)}}
child {node (e22) {No financing B \\ (E22)}}
child {node (e23) {No financing C \\ (E23)}}
}
child {node (e3) {No collaboration\\ (E3)}
child {node (e31) {Low incentive\\ (E31)}}
child {node (e32) {Low trust\\ (E32)}}
};
% Remove what follows if no gates are required
\node [or] at (g1.south) [] {};
\node [or] at (e1.south) [] {};
\node [or] at (e2.south) [] {};
\node [and] at ([yshift=1mm]e21.south) [] {};
\node [and] at ([yshift=1mm]e22.south) [] {};
\node [and] at ([yshift=1mm]e23.south) [] {};
\node [and] at (e3.south) [] {};
\node [be] at (e11.south) [] {};
\node [be] at (e12.south) [] {};
\node [be] at (e13.south) [] {};
\node [be] at (e31.south) [] {};
\node [be] at (e32.south) [] {};
\end{tikzpicture}
\end{document}