Seite 1 von 2

Spielbaum

Verfasst: Do 8. Aug 2019, 20:17
von mango1234
\documentclass[tikz]{standalone} 
\usetikzlibrary{positioning} 

\begin{document} 
\begin{figure}
\centering
\begin{tikzpicture}[ 
    thin,
    level 1/.style={sibling distance=40mm}, 
    level 2/.style={sibling distance=25mm}, 
    level 3/.style={sibling distance=20mm}, 
    
    every circle node/.style={minimum size=0mm, inner sep=0mm} 
] 
\node[circle,fill] (root) {} 
    child { node [circle,draw] {} 
    	child { node [circle,fill] {} 
	   edge from parent 
          }
         child { node [circle,draw] {} 
            edge from parent 
        } 
        edge from parent  
         }
    child { node [circle,fill] {} 
        child { node [circle,fill] (y2) {}
            child { node [circle,draw] {}
                edge from parent 
            } 
            child { node [circle,draw] {} 
                edge from parent  
            } 
            edge from parent 
        } 
        child { node [circle,draw] (z4) {}
          child { node [circle,draw] {} 
                edge from parent 
           } 
            child { node [circle,draw] {} 
                edge from parent                  
            } 
            edge from parent             
        } 
      }
        %\draw (y2) -- (z4)
          \end{tikzpicture} 
 \caption{mit perfect recall}\label{SP12}
\end{figure}
\enddocument 
hab mal wieder ein Problem mit einem Spielbaum, wie kann ich zwischen y2 und z4 eine gestrichelte Linie ziehen? bei einem anderem Spielbaum hab ich es mit draw gemacht aber hier funktioniert es irgendwie nicht
:?: danke schon mal für eure Hilfe

Verfasst: Do 8. Aug 2019, 20:47
von Bartman
Da dashed auch alle weiteren Kanten und Knoten im Baum beeinflusst, müssen diese mit solid in den Ausgangszustand zurückgesetzt werden.
\documentclass[tikz, border=5pt]{standalone}

\begin{document}
\begin{tikzpicture}[
    thin,
    level 1/.style={sibling distance=40mm},
    level 2/.style={sibling distance=25mm},
    level 3/.style={sibling distance=20mm},
    every circle node/.style={minimum size=0mm, inner sep=0mm}
]
\node[circle,fill] (root) {}
    child { node [circle,draw] {}
       child { node [circle,fill] {}
      edge from parent 
          }
         child { node [circle,draw] {}
            edge from parent 
        }
        edge from parent  
         }
    child { node [circle,fill] {} 
        child [dashed] { node [circle,fill] (y2) {}
            child [solid] { node [circle,draw] {}
                edge from parent 
            }
            child [solid] { node [circle,draw] {}
                edge from parent  
            }
            edge from parent 
        }
        child [dashed] { node [circle,draw] (z4) {}
          child [solid] { node [circle,draw] {}
                edge from parent 
           }
            child [solid] { node [circle,draw] {}
                edge from parent 
            }
            edge from parent 
        }
      };
\end{tikzpicture}
\end{document}
Wenn der Baum ohne Knoten gezeichnet werden soll, dann kannst Du den Quelltext viel schlanker gestalten.
\documentclass[tikz, border=5pt]{standalone}

\begin{document}
\begin{tikzpicture}[
    thin,
    level 1/.style={sibling distance=40mm},
    level 2/.style={sibling distance=25mm},
    level 3/.style={sibling distance=20mm}
]
\coordinate
    child { 
        child 
        child 
    }
    child { 
        child [dashed] {% (y2)
            child [solid] 
            child [solid]
        }
        child [dashed] {% (z4)
            child [solid]
            child [solid] 
        }
    }
;
\end{tikzpicture}
\end{document}

Verfasst: Fr 9. Aug 2019, 09:37
von mango1234
danke aber eigentlich brauch ich ja die gestrichelte Linie zwischen den knoten y2 und z4 und nicht die äste...

Verfasst: Fr 9. Aug 2019, 09:43
von Bartman
Dann übergib doch dem Befehl \draw die angesprochene Option.

Sorge bitte außerdem für ein vollständiges Beispiel. Es sollte also in Deinem Fall keine Fehlermeldungen (fehlende Semikola oder Leerzeilen in der Optionenliste der Umgebung) ausgeben.

Verfasst: Fr 9. Aug 2019, 09:49
von mango1234
das hab ich ja zu beginn probiert mit
 \draw (y2)--(z4)

Verfasst: Fr 9. Aug 2019, 09:52
von Bartman
Es funktioniert also auch nicht mit abschließendem Semikolon?
\draw [dashed] (y2) -- (z4);

Verfasst: Fr 9. Aug 2019, 09:56
von mango1234
füge ich das ein kompiliert die ganze Arbeit nicht mehr. und probiere ich es ganz alleine in einem extra Dokument geht es auch nicht

Verfasst: Fr 9. Aug 2019, 10:05
von mango1234
Hier nochmals das ganze:
\documentclass[tikz]{standalone} 
\usetikzlibrary{positioning} 

\begin{document}

\begin{tikzpicture}[ 
    thin, 
    level 1/.style={sibling distance=40mm}, 
    level 2/.style={sibling distance=25mm}, 
    level 3/.style={sibling distance=20mm} 
] 
\coordinate 
    child { 
        child 
        child 
    } 
    child { 
        child [dashed] (y2) { 
            child [solid] 
            child [solid] 
        } 
        child [dashed] (z4) {
            child [solid] 
            child [solid] 
        } 
    } 
  \draw [dashed] (y2) -- (z4)   
; 
\end{tikzpicture} 
\end{document}

Verfasst: Fr 9. Aug 2019, 10:56
von mango1234
jetzt sieht der ganze baum anders aus. ich möchte einfach nur einen horizontalen strichlierten strich zwischen den knoten

Verfasst: Fr 9. Aug 2019, 11:02
von Bartman
Die Maßnahmen sind kein Geheimnis, sondern können im Abschnitt 21.3 "Naming Child Nodes" der Dokumentation von pgf/TikZ nachgelesen werden.
\documentclass[tikz]{standalone}

\begin{document}
\begin{tikzpicture}[
    thin,
    level 1/.style={sibling distance=40mm},
    level 2/.style={sibling distance=25mm},
    level 3/.style={sibling distance=20mm}
]
\coordinate
    child {
        child
        child
    }
    child {
        child { coordinate (y2)
            child 
            child 
        }
        child { coordinate (z4)
            child
            child
        }
    }
;% Semikolon für \coordinate  
\draw [dashed] (y2) -- (z4);% Semikolon für \draw
\end{tikzpicture}
\end{document}