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

据我所知,基本问题是你把树结构和所有节点的手动放置混在一起了。所以,如果我不得不猜测的话,我猜你的代码 --- 重现问题的代码,而不是你分享的代码,而代码没有 --- 你告诉 TiZ 表示树朝一个方向生长,同时手动强制节点的位置,就好像它朝另一个方向生长一样。

使用树然后将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}

相关内容