Tikz ha rotado los nodos de mis hijos.

Tikz ha rotado los nodos de mis hijos.

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 distancey level distanceen 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 \tikzstyley 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]  {}
  }
  ;
}

árbol

O con grow=up:

árbol arriba

Si me esfuerzo, puedo producir una aproximación de su resultado.

árbol feo

Pero obtuve esto poniendo a cero levely sibling distanceconfigurando 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.

bosque

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}

información relacionada