我正在 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
:
如果我努力,我就能得出与你输出相近的结果。
但是我通过归零level
和sibling 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}