So verbessern Sie das Erscheinungsbild eines Entscheidungsbaums

So verbessern Sie das Erscheinungsbild eines Entscheidungsbaums

Ich bin neu im Erstellen von Grafiken (in diesem Fall eines Entscheidungsbaums) in Latex. Ich habe herausgefunden, wie ich den benötigten Baum zeichnen kann, aber ich könnte ein wenig Hilfe gebrauchen, damit er schöner aussieht. Insbesondere möchte ich die Textbeschriftungen (z. B. Keine/Einige/Voll/Nein/Ja) parallel zum Pfad ausrichten, den sie beschriften. Unten ist mein Code und ein Bild meines Baums. Ich habe rote Pfeile auf dem Baum platziert, die zeigen, wie ich die verschiedenen Textbeschriftungen ausgerichtet haben möchte. Danke für Ihre Hilfe!

\documentclass[12pt, fullpage,letterpaper]{article}

\usepackage{verbatim}
\usepackage{tikz}
\usetikzlibrary{calc, shapes}
\usepackage{amsmath, amssymb}

\begin{document}
\tikzset{
    Patrons/.style = {text = black, label = center:\textsf{Patrons}},
    Friday/.style = {text = black, label = center:\textsf{Friday}},
    Hungry/.style = {text = black, label = center:\textsf{Hungry}},
    No/.style = {text = black, label = center:\textsf{No}},
    Yes/.style = {text = black, label = center:\textsf{Yes}}
}

\begin{tikzpicture}[
    scale = 1, transform shape, thick,
    every node/.style = {draw, rectangle, minimum size = 15mm},
    grow = down, 
    level 1/.style = {sibling distance=4cm},
    level 2/.style = {sibling distance=4cm}, 
    level 3/.style = {sibling distance=2cm}, 
    level distance = 3cm
    ]
  
  \node [Patrons] (A) {}
  child { node [No] (B) {}} 
  child { node [Yes] (C) {}}
  child { node [Friday] (D) {}
    child { node [Hungry] (E) {}
        child { node [No] (G) {}}
        child { node [Yes] (H) {}}
    }
    child { node [No] (F) {}}
  };
  
  % Labels
  \begin{scope}[nodes = {draw = none}]
    \path (A) -- (B) node [near start, left] {None};
    \path (A) -- (C) node [near start, left] {Some};
    \path (A) -- (D) node [near start, right] {Full};
    \path (D) -- (E) node [near start, left] {Yes};
    \path (E) -- (F) node [near start, left] {No};
    \path (E) -- (G) node [near start, right] {Yes};
    \path (D) -- (H) node [near start, right] {No};
  \end{scope}
\end{tikzpicture}
\end{document}

Antwort1

Verwenden Sie einen einfachen Stil für den Baum -- es müssen beispielsweise nur Namen eingetragen werden --

child { node [P] (D) {Friday} %--- only Friday needs to be filled now 

So werden Wiederholungen vermieden

Ähnlich ist es bei den Beschriftungen mit einem einfachen Stil und der Option „Schrägstellung“ -- siehe da -- auch die Knoten im Beschriftungsbereich müssen direkt danach --und nicht am Ende platziert werden

Bildbeschreibung hier eingeben

\documentclass[12pt, fullpage,letterpaper]{article}

\usepackage{verbatim}
\usepackage{tikz}
\usetikzlibrary{calc, shapes}
\usepackage{amsmath, amssymb}

\begin{document}
    \tikzset{
        P/.style = {text = black, label = center:\textsf{#1}},
%       Friday/.style = {text = black, label = center:\textsf{#1}},
%       Hungry/.style = {text = black, label = center:\textsf{Hungry}},
%       No/.style = {text = black, label = center:\textsf{No}},
%       Yes/.style = {text = black, label = center:\textsf{Yes}}
    }
    
    \begin{tikzpicture}[
    scale = 1, transform shape, thick,
    every node/.style = {draw, rectangle, minimum size = 15mm},
    grow = down, 
    level 1/.style = {sibling distance=4cm},
    level 2/.style = {sibling distance=4cm}, 
    level 3/.style = {sibling distance=2cm}, 
    level distance = 3cm
    ]
    
    \node [P] (A) {}
    child { node [P] (B) {}} 
    child { node [P] (C) {}}
    child { node [P] (D) {Friday}
        child { node [P] (E) {}
            child { node [P] (G) {}}
            child { node [P] (H) {}}
        }
        child { node [P] (F) {}}
    };
    
    % Labels
    \begin{scope}[nodes = {draw = none},pos=0.3, sloped,left]
    \path (A) -- node [yshift=5pt] {None} (B) ;
%   \path (A) -- (C) node [] {Some};
%   \path (A) -- (D) node [] {Full};
%   \path (D) -- (E) node [] {Yes};
%   \path (E) -- (F) node [] {No};
%   \path (E) -- (G) node [] {Yes};
%   \path (D) -- (H) node [] {No};
    \end{scope}
    \end{tikzpicture}
\end{document}

verwandte Informationen