Bäume wachsen lassen mit dem Waldpaket

Bäume wachsen lassen mit dem Waldpaket

Ist es möglich, mit dem Forest-Paket einen Baum so wachsen zu lassen, dass die untergeordneten Elemente vertikal gestapelt sind, etwa wie folgt: ein Baumknoten mit vielen Kindern

Am Ende habe ich Folgendes gemacht: Wenn das übergeordnete Element A ist und drei untergeordnete Elemente BCD hat und ich alle untergeordneten Elemente wie oben gezeigt anhängen möchte, musste ich Folgendes tun:

\begin{forest}
for tree={
draw,
%  minimum height=2cm,
%  anchor=west,
align=center
% calign
%  child anchor=west
},
[{ROOT},  align=center
[{ A} , parent anchor=south, child anchor=north  
[{B}, parent anchor=east,  anchor=east, child anchor=east , calign=child edge 
[{C}, parent anchor=east, anchor=east, child anchor=east, calign=child edge
    [{D}, parent anchor=east, anchor=east, child anchor=east 
    ]
  ]
 ]
]
\end{forest}

Wie Sie sehen, musste ich B zum übergeordneten Element von C und C zum übergeordneten Element von D machen, obwohl sie alle Kinder von A sind.

Antwort1

Nicht nur haben schon mehrere Leute Code für dieses Diagramm bereitgestellt, ich habe es definitiv auch schon einmal mit Forest beantwortet.

Es wäre viel einfacher, wenn das Bild in der Frage mit der Quelle verknüpft wäre, da mir das durchaus einen Hinweis geben könnte.

Ich weiß, dass ich eine Forest-Lösung angegeben habe, weil ich eine gefunden habe, aber anscheinend habe ich keinen Link zu meiner Antwort angegeben. Und ich erinnere mich, dass ich verärgert war, weil ich das Diagramm von Grund auf neu gezeichnet habe, obwohl der OP auf Code hätte verweisen können, den ich hätte kopieren und einfügen und anpassen können, da er zuvor beantwortet worden war (aber vielleicht funktionierte der Code nicht mehr oder verwendete kein Forest oder so etwas).

Dieses Diagramm ist äußerst ärgerlich, weil es mir IMMER WIEDER passiert.

Wie dem auch sei, ich habe den Code für Forest v.2 aktualisiert, indem ich eine modifizierte Version des Codes inmeine Antwortverlinkt inKommentar von Torbjørn T.. Diese Version verwendet den folderStil aus der edgesBibliothek.

\documentclass[border=5pt,tikz,multi]{standalone}
\usepackage[edges]{forest}
\usetikzlibrary{arrows.meta,shadows.blur}
\forestset{%
  colour me out/.style={outer color=#1!75, inner color=#1!50, draw=darkgray, thick, blur shadow, rounded corners},
  rect/.append style={rectangle, rounded corners=2pt},
  dir tree switch/.style args={at #1}{%
    for tree={
      edge=-Latex,
      font=\sffamily,
      fit=rectangle,
    },
    where level=#1{
      for tree={
        folder,
        grow'=0,
      },
      delay={child anchor=north},
    }{},
    before typesetting nodes={
      for tree={
        content/.wrap value={\strut ##1},
      },
      if={isodd(n_children("!r"))}{
        for nodewalk/.wrap pgfmath arg={{fake=r,n=##1}{calign with current edge}}{int((n_children("!r")+1)/2)},
      }{},
    },
  },
}

\begin{document}
\begin{forest}
  dir tree switch=at 1,
  for tree={
    font=\sffamily\bfseries,
    rect,
    align=center,
    edge+={thick, draw=darkgray},
    where level=0{%
      colour me out=green!50!white,
    }{%
      if level=1{%
        colour me out=green!95!black,
      }{%
        colour me out=magenta!50!orange!75!white,
        edge+={-Triangle},
      },
    },
  }
  [Drawing\\Diagrams
    [Defining node\\and arrow styles
      [Setting shape]
      [Choosing colour]
      [Adding shading]
    ]
    [Positioning\\the nodes
      [Using a matrix
        [Absolutely]
        [Relatively]
        [Using overlays]
      ]
    ]
    [Drawing arrows\\between nodes
      [Default arrows
        [Arrow library]
        [Re-sizing tips]
        [Shortening]
        [Bending]
      ]
    ]
  ]
\end{forest}
\end{document}

Wald 2 Ausgabe

verwandte Informationen