Tikzは私の子ノードを回転させました

Tikzは私の子ノードを回転させました

tikz でツリーを描画していますが、子ノードが回転しているようで、子ノードに入る線がオフセットされて通過します。たとえば、この図を参照してください。特に、線が中心からずれていることと、青いボールを通過する方法に注意してください。

私は以下を使用して絵を描きました:

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

環境を定義し、

\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) {}
}
;

}

実際の図を描いてください。なぜこんなに醜く見えるのか、誰か分かるでしょうか?

答え1

私が知る限り、基本的な問題は、ツリー構造とすべてのノードの手動配置を混在させていることです。したがって、あえて推測すると、あなたのコード --- 問題を再現するコードと、共有したコードでは再現しないコード --- Tiに伝えているZ は、ツリーが一方向に成長しているのに、別の方向に成長しているかのように手動でノードの位置を強制することを示します。

sibling distanceツリーを使用してから との両方をゼロに設定するのは意味がありませんlevel distance。少なくとも、私の想像力が足りないだけかもしれませんが、これを行う正当な理由が思いつきません。

\tikzstyleこれは、非推奨のものを削除して実際にツリーになるように変更されたツリーのバージョンです。

\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]  {}
  }
  ;
}

木

または、次のようにしますgrow=up:

木の上

一生懸命努力すれば、あなたの出力に近いものを作ることができます。

醜い木

しかし、 をゼロにしてlevelsibling distance設定することで、次の結果が得られました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) {}
  }
  ;
}

それは決して明白なことではありません。

完全を期すために、以下を示しますforest

\begin{forest}
  [, b
    [, bb
    ]
    [, b
    ]
  ]
\end{forest}

より簡潔な仕様からツリーを生成します。

森

完全なコード:

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

関連情報