
Ich zeichne einen Baum in Tikz, aber es scheint, als wären die untergeordneten Knoten gedreht worden, sodass die Linie, die in sie hineinführt, versetzt ist und durch sie hindurchgeht. Siehe z. B. dieses Bild. Beachten Sie insbesondere, wie die Linien außermittig sind und wie sie durch die blaue Kugel verlaufen..
Ich habe das Bild gezeichnet mit:
\includepackage{tikz}
\tikzstyle planar forest=[scale=1, sibling distance=0, level distance=0, semithick]
\tikzstyle planar forest node=[scale=1, shape=circle, semithick, draw]
\tikzstyle b=[style=planar forest node, fill=black]
\tikzstyle bb=[style=planar forest node, fill=blue]
um die Umgebung zu definieren und:
\tikz[planar forest] {
\node [b, label=right:] at (0.0, 0.0) {}
child {node [bb, label=right:] at (-0.5, 1.0) {}
}
child {node [b, label=right:] at (0.5, 1.0) {}
}
;
}
um die eigentliche Figur zu zeichnen. Hat jemand eine Idee, warum sie so hässlich aussieht?
Antwort1
Das grundlegende Problem ist meines Erachtens, dass Sie eine Baumstruktur mit der manuellen Platzierung aller Knoten mischen. Wenn ich also eine Vermutung wagen müsste, würde ich vermuten, dass indeinCode --- der Code, der das Problem reproduziert, im Gegensatz zu dem Code, den Sie freigegeben haben, der dies nicht tut --- Sie sagen TikZ bedeutet, dass der Baum in eine Richtung wächst, während die Position der Knoten manuell erzwungen wird, als würde er in eine andere wachsen.
Es ergibt keinen Sinn, einen Baum zu verwenden und dann sowohl als auch sibling distance
auf level distance
Null zu setzen. Zumindest fehlt mir vielleicht einfach die Vorstellungskraft, aber ich kann mir keinen guten Grund vorstellen, warum Sie das tun sollten.
Hier ist eine Version Ihres Baums, aktualisiert, um die veralteten Elemente zu entfernen, \tikzstyle
und geändert, um tatsächlich ein Baum zu sein.
\tikzset{
planar forest node/.style={shape=circle, semithick, draw},
b/.style={style=planar forest node, fill=black},
bb/.style={style=planar forest node, fill=blue},
}
\tikz {
\node [b, label=right:A] {}
child {node [bb, label=right:B] {}
}
child {node [b, label=right:C] {}
}
;
}
Oder mit grow=up
:
Wenn ich mir Mühe gebe, kann ich eine Annäherung an Ihr Ergebnis erzielen.
Aber ich habe dies erreicht, indem ich sowohl auf Null gesetzt level
als sibling distance
auch Folgendes eingestellt habe yscale=-.75
:
\tikz [sibling distance=0, level distance=0, yscale=-.75] {
\node [b] {}
child {node [bb] at (-.5,1) {}
}
child {node [b] at (.5,1) {}
}
;
}
was kaum eine Selbstverständlichkeit ist.
Der Vollständigkeit halber hier noch eins forest
:
\begin{forest}
[, b
[, bb
]
[, b
]
]
\end{forest}
wodurch ein Baum aus einer viel präziseren Spezifikation erstellt wird.
Vollständiger Code:
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\begin{document}
\tikzset{
planar forest node/.style={shape=circle, semithick, draw},
b/.style={style=planar forest node, fill=black},
bb/.style={style=planar forest node, fill=blue},
}
\tikz {
\node [b, label=right:A] {}
child {node [bb, label=right:B] {}
}
child {node [b, label=right:C] {}
}
;
}
\tikz [grow=up] {
\node [b, label=right:A] {}
child {node [bb, label=right:B] {}
}
child {node [b, label=right:C] {}
}
;
}
\tikz [sibling distance=0, level distance=0, yscale=-.75] {
\node [b] {}
child {node [bb] at (-.5,1) {}
}
child {node [b] at (.5,1) {}
}
;
}
\begin{forest}
[, b
[, bb
]
[, b
]
]
\end{forest}
\end{document}