Erstellen Sie mehrere Pfadstile vom übergeordneten zum untergeordneten Element in einem TikZtree

Erstellen Sie mehrere Pfadstile vom übergeordneten zum untergeordneten Element in einem TikZtree

Ich weiß, wie man ein Diagramm wie dieses erstellt:

Danach gelingt es mir, den Pfad von der Wurzel zu ihren Kindern zu erstellen, sodass er folgendermaßen aussieht:

Jetzt versuche ich, es so aussehen zu lassen:

Ich habe diesen Code erstellt:

\documentclass[utf8]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,positioning,shadows,trees}

\tikzset{
    basic/.style  = {draw, text width=15em, drop shadow, rectangle},
    root/.style   = {basic, rounded corners=2pt, thin, align=center,
        fill=green!30},
    level 2/.style = {basic, rounded corners=6pt, thin,align=center, fill=green!60,
        text width=8em},
    level 3/.style = {basic, thin, align=left, fill=pink!60, text width=6.5em}
}

\begin{document}
    \begin{tikzpicture}[
    every node/.style={anchor=center, align=center},
    level 1/.style={sibling distance=12em},
    edge from parent path={(\tikzparentnode.south) |- (0em,2em) -| (\tikzchildnode.north)},
    edge from parent/.style={->,draw},
    >=latex]

    % root of the the initial tree, level 1
    \node[root] {Drawing diagrams}
    % The first level, as children of the initial tree
    child {node[level 2] (c1) {Defining node and arrow styles}}
    child {node[level 2] (c2) {Positioning the nodes}}
    child {node[level 2] (c3) {Drawing arrows between nodes}};

    % The second level, relatively positioned nodes
    \begin{scope}[every node/.style={level 3}]
    \node [below of = c1, xshift=15pt] (c11) {Setting shape};
    \node [below of = c11] (c12) {Choosing color};
    \node [below of = c12] (c13) {Adding shading};

    \node [below of = c2, xshift=15pt] (c21) {Using a Matrix};
    \node [below of = c21] (c22) {Relatively};
    \node [below of = c22] (c23) {Absolutely};
    \node [below of = c23] (c24) {Using overlays};

    \node [below of = c3, xshift=15pt] (c31) {Default arrows};
    \node [below of = c31] (c32) {Arrow library};
    \node [below of = c32] (c33) {Resizing tips};
    \node [below of = c33] (c34) {Shortening};
    \node [below of = c34] (c35) {Bending};
    \end{scope}

    % lines from each level 1 node to every one of its "children"
    \foreach \value in {1,2,3}
        \draw[->] (c1.west) -| (-1em,0em) |- (c1\value.west);

    \foreach \value in {1,...,4}
        \draw[->] (c2.west) -| (-1em,0em) |- (c2\value.west);

    \foreach \value in {1,...,5}
        \draw[->] (c3.west) -| (-1em,0em) |- (c3\value.west);
    \end{tikzpicture}
\end{document}

Aber es führt nur zu diesem Chaos:

Wo ist es schiefgelaufen?

Antwort1

++Sie waren fast am Ziel: Fügen Sie in den letzten drei \drawBefehlen einfach 3 hinzu .

\documentclass[utf8]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,positioning,shadows,trees}

\tikzset{
    basic/.style  = {draw, text width=15em, drop shadow, rectangle},
    root/.style   = {basic, rounded corners=2pt, thin, align=center,
        fill=green!30},
    level 2/.style = {basic, rounded corners=6pt, thin,align=center, fill=green!60,
        text width=8em},
    level 3/.style = {basic, thin, align=left, fill=pink!60, text width=6.5em}
}

\begin{document}
    \begin{tikzpicture}[
    every node/.style={anchor=center, align=center},
    level 1/.style={sibling distance=12em},
    edge from parent path={(\tikzparentnode.south) |- (0em,2em) -| (\tikzchildnode.north)},
    edge from parent/.style={->,draw},
    >=latex]

    % root of the the initial tree, level 1
    \node[root] {Drawing diagrams}
    % The first level, as children of the initial tree
    child {node[level 2] (c1) {Defining node and arrow styles}}
    child {node[level 2] (c2) {Positioning the nodes}}
    child {node[level 2] (c3) {Drawing arrows between nodes}};

    % The second level, relatively positioned nodes
    \begin{scope}[every node/.style={level 3}]
    \node [below of = c1, xshift=15pt] (c11) {Setting shape};
    \node [below of = c11] (c12) {Choosing color};
    \node [below of = c12] (c13) {Adding shading};

    \node [below of = c2, xshift=15pt] (c21) {Using a Matrix};
    \node [below of = c21] (c22) {Relatively};
    \node [below of = c22] (c23) {Absolutely};
    \node [below of = c23] (c24) {Using overlays};

    \node [below of = c3, xshift=15pt] (c31) {Default arrows};
    \node [below of = c31] (c32) {Arrow library};
    \node [below of = c32] (c33) {Resizing tips};
    \node [below of = c33] (c34) {Shortening};
    \node [below of = c34] (c35) {Bending};
    \end{scope}

    % lines from each level 1 node to every one of its "children"
    \foreach \value in {1,2,3}
        \draw[->] (c1.west) -| ++(-1em,0em) |- (c1\value.west);

    \foreach \value in {1,...,4}
        \draw[->] (c2.west) -| ++(-1em,0em) |- (c2\value.west);

    \foreach \value in {1,...,5}
        \draw[->] (c3.west) -| ++(-1em,0em) |- (c3\value.west);
    \end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

Antwort2

So was?

\documentclass[utf8]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,positioning,shadows,trees}

\tikzset{
    basic/.style  = {draw, text width=15em, drop shadow, rectangle},
    root/.style   = {basic, rounded corners=2pt, thin, align=center,
        fill=green!30},
    level 2/.style = {basic, rounded corners=6pt, thin,align=center, fill=green!60,
        text width=8em},
    level 3/.style = {basic, thin, align=left, fill=pink!60, text width=6.5em}
}

\begin{document}
    \begin{tikzpicture}[
    every node/.style={anchor=center, align=center},
    level 1/.style={sibling distance=12em},
    edge from parent path={(\tikzparentnode.south) |- (0em,2em) -| (\tikzchildnode.north)},
    edge from parent/.style={->,draw},
    >=latex]

    % root of the the initial tree, level 1
    \node[root] {Drawing diagrams}
    % The first level, as children of the initial tree
    child {node[level 2] (c1) {Defining node and arrow styles}}
    child {node[level 2] (c2) {Positioning the nodes}}
    child {node[level 2] (c3) {Drawing arrows between nodes}};

    % The second level, relatively positioned nodes
    \begin{scope}[every node/.style={level 3}]
    \node [below of = c1, xshift=15pt] (c11) {Setting shape};
    \node [below of = c11] (c12) {Choosing color};
    \node [below of = c12] (c13) {Adding shading};

    \node [below of = c2, xshift=15pt] (c21) {Using a Matrix};
    \node [below of = c21] (c22) {Relatively};
    \node [below of = c22] (c23) {Absolutely};
    \node [below of = c23] (c24) {Using overlays};

    \node [below of = c3, xshift=15pt] (c31) {Default arrows};
    \node [below of = c31] (c32) {Arrow library};
    \node [below of = c32] (c33) {Resizing tips};
    \node [below of = c33] (c34) {Shortening};
    \node [below of = c34] (c35) {Bending};
    \end{scope}

    % lines from each level 1 node to every one of its "children"
    \foreach \value in {1,2,3}
        \draw[->] (c1.west)--([xshift=-5mm]c1.west) |-  (c1\value.west);

    \foreach \value in {1,...,4}
        \draw[->] (c2.west)--([xshift=-5mm]c2.west) |- (c2\value.west);

    \foreach \value in {1,...,5}
        \draw[->] (c3.west)--([xshift=-5mm]c3.west) |- (c3\value.west);
    \end{tikzpicture}
\end{document}

Bildschirmfoto

verwandte Informationen