Comportamento estranho do nó filho dentro do nó matriz

Comportamento estranho do nó filho dentro do nó matriz

O nó filho se comporta de maneira estranha dentro de um nó matriz. E só aparece em um nó da matriz. Eu sei que existem métodos para desenhá-lo sem o nó da matriz neste caso simples. Mas essencialmente preciso desenhar o diagrama de Hasse de um conjunto parcialmente ordenado, onde cada elemento é uma árvore. Portanto, seria bom se o nó da matriz fosse mantido. De qualquer forma, o comportamento estranho também é interessante. Pode-se também verificarnó filho estranhamente inclinado para a direitapara ver que ele também aparece ao usar o tikzpicture aninhado. Sugere-se que levante uma nova questão para o caso do nó matriz.

Duas árvores próximas uma da outra

\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}

Responder1

Os conjuntos implícitos positioningda biblioteca . Infelizmente, isso é transmitido aos nós dentro da matriz.right = of …anchor = west

Poderíamos criar positioningchaves extras para uma matriz que usamos matrix anchorem vez de, anchormas neste caso, a solução mais fácil seria definir explicitamente anchor = center(o padrão) ou centered(um alias para anchor = center) para todos os nós das matrizes.

A sintaxe da árvore do TikZ é muito simples e não define nenhuma âncora automaticamente.

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}

Saída

insira a descrição da imagem aqui

Responder2

Acho que o problema parece estar relacionado com positioning. Existe uma solução alternativa como segue.

\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}

informação relacionada