Árvore de falhas usando TikZ: desenhe subárvore em vários níveis

Árvore de falhas usando TikZ: desenhe subárvore em vários níveis

Nas linhas da Árvore de Falhas no exemplo TiKZ (http://www.texample.net/tikz/examples/fault-tree/), fiz a seguinte árvore de falhas

 \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}}
        };

No entanto, os nós da árvore se sobrepõem. Tentei reduzir a distância entre os nós, mas neste caso não parece tão elegante. Existe uma maneira de a subárvore E2 estar em um nível inferior ao da subárvore E1? insira a descrição da imagem aqui

Responder1

É isso que você procura? Parece que seu código não reflete a imagem que você postou. Esta solução tentou gerar a imagem desejada e mover a subárvore E2 para baixo da subárvore E1. Isso é conseguido usando a opção [level distance=xx]no e2nó.

child[level distance=70mm]  {node (e2) {No financing \\(E2)}

A mesma ideia se aplica se desejar que a subárvore do E3 se mova um pouco para a esquerda. Mas [sibling distance=xx]é usado aqui

child[sibling distance=30mm] {node (e3) {No collaboration}

Se nenhuma porta for necessária, remova o código da última parte.

Código

\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}

insira a descrição da imagem aqui

informação relacionada