Comportamiento extraño del nodo secundario dentro del nodo matriz

Comportamiento extraño del nodo secundario dentro del nodo matriz

El nodo hijo se comporta de manera extraña dentro de un nodo matriz. Y sólo aparece en un nodo de la matriz. Sé que existen métodos para dibujarlo sin el nodo de matriz en este caso simple. Pero esencialmente necesito dibujar el diagrama de Hasse de un conjunto parcialmente ordenado, donde cada elemento es un árbol. Por lo tanto, sería bueno si se mantuviera el nodo de la matriz. De todos modos, el extraño comportamiento también es interesante. También se puede comprobarnodo hijo extrañamente inclinado hacia la derechapara ver que también aparece cuando se usa tikzpicture anidado. Se me sugiere plantear una nueva pregunta para el caso del nodo de matriz.

Dos árboles uno al lado del otro

\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
    [level distance = 10mm]

    \node [matrix, label=left:{$T_1$}] (T1)
    {
            \begin{scope}
                [every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
                \node {}
                child {node {} child {node {}}}
                child {node {} child {node {}}}
                child {node {} child {node {}}};
            \end{scope}\\
        };

    \node [matrix, right = of T1, label=left:{$T_2$}] (T2)
    {
            \begin{scope}
                [every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
                \node {}
                child {node {} child {node {}}}
                child {node {} child {node {}}}
                child {node {} child {node {}}};
            \end{scope}\\
        };

\end{tikzpicture}
\end{document}

Respuesta1

Los conjuntos implícitos de la positioningbiblioteca . Desafortunadamente, esto se transmite a los nodos dentro de la matriz.right = of …anchor = west

Podríamos crear positioningclaves adicionales para una matriz que use matrix anchoren lugar de, anchorpero en este caso, la solución más sencilla sería establecer explícitamente anchor = center(el valor predeterminado) o centered(un alias para anchor = center) para todos los nodos de las matrices.

La sintaxis del árbol de TikZ es muy simple y no establece ningún anclaje automáticamente.

Código

\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
  level distance = 10mm,
  every matrix/.style={
    nodes={draw, circle, inner sep=1pt, minimum size = 1mm, centered}}]
\node [matrix, label=left:{$T_1$}] (T1){
  \node {}
    child {node {} child {node {}}}
    child {node {} child {node {}}}
    child {node {} child {node {}}};\\};
\node [matrix, right = of T1, label=left:{$T_2$}] (T2){
  \node {}
    child {node {} child {node {}}}
    child {node {} child {node {}}}
    child {node {} child {node {}}};\\};
\end{tikzpicture}
\end{document}

Producción

ingrese la descripción de la imagen aquí

Respuesta2

Creo que el problema parece estar relacionado con positioning. Existe una solución alternativa como la siguiente.

\documentclass[tikz]{standalone}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}
    [level distance = 10mm]

    \node [matrix, label=left:{$T_1$}] (T1)
    {
            \begin{scope}
                [every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
                \node [grow=down] {}
                child {node {} child {node {}}}
                child {node {} child {node {}}}
                child {node {} child {node {}}};
            \end{scope}\\
        };

    \node [matrix, label=left:{$T_2$}, matrix anchor=west] at ($(T1.east) + (10mm,0)$) (T2)
    {
            \begin{scope}
                [every node/.style={draw, circle, inner sep=1pt, minimum size = 1mm}]
                \node {}
                child {node {} child {node {}}}
                child {node {} child {node {}}}
                child {node {} child {node {}}};
            \end{scope}\\
        };

\end{tikzpicture}
\end{document}

información relacionada