
Estoy dibujando un árbol en tikz, sin embargo, parece que los nodos secundarios se han rotado, de modo que la línea que entra en ellos está desplazada y pasa. Vea, por ejemplo, esta imagen. Observe especialmente cómo las líneas están descentradas y cómo pasa a través de la bola azul..
He dibujado la imagen usando:
\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]
definir el entorno y:
\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) {}
}
;
}
para dibujar la figura real. ¿Alguien tiene una idea de por qué se ve tan feo?
Respuesta1
El problema básico, hasta donde yo sé, es que estás mezclando una estructura de árbol con la colocación manual de todos los nodos. Entonces, si tuviera que arriesgarme a adivinar, diría que ensucódigo --- el código que reproduce el problema a diferencia del código que has compartido, que no --- le estás diciendo a TikZ que el árbol crece en una dirección mientras se fuerza manualmente la ubicación de los nodos como si creciera en otra.
No tiene sentido utilizar un árbol y luego establecer ambos sibling distance
y level distance
en cero. Al menos, puede que simplemente me falte imaginación, pero no se me ocurre una buena razón por la que querrías hacer esto.
Aquí hay una versión de su árbol, actualizada para eliminar lo obsoleto \tikzstyle
y modificado para que sea realmente un árbol.
\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] {}
}
;
}
O con grow=up
:
Si me esfuerzo, puedo producir una aproximación de su resultado.
Pero obtuve esto poniendo a cero level
y sibling distance
configurando 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) {}
}
;
}
lo cual no es nada obvio.
Para completar, aquí hay un forest
:
\begin{forest}
[, b
[, bb
]
[, b
]
]
\end{forest}
lo que produce un árbol a partir de una especificación mucho más concisa.
Código completo:
\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}