我正在尝试创建两棵树来描述两个视觉上对齐的实验,但第二张图 (M2) 的类别少 1 个。如果我仅删除第 4 个类别,它会移动整个第 4 列,并重新定位第二棵树,这不是我想要的。我想要以下内容:
- 移除第二棵树中的第 4 个框“果实类型”,但保持该列与第一棵树对齐。
- 确保“结果”列下的所有框(第一棵树和第二棵树) (a) 宽度相同,并且 (b) 对齐。目前,第二棵树中的框随着包含 N 个观察值而具有不同的宽度大小,我怀疑如果我在里面放入较长的文本,它甚至可能会扰乱与第一棵树的对齐。
期望的结果:
我不要的是:
以下是当前代码:
\documentclass{article}
\usepackage{forest}
\useforestlibrary{edges}
\usetikzlibrary {decorations.pathreplacing, calligraphy}
\tikzset{mybrace/.style={decorate, decoration={calligraphic brace, amplitude=2mm}, ultra thick, transform canvas={xshift=1mm}}}
\begin{document}
\begin{figure}
\centering
\caption{Experimental Conditions and the Number of Observations}
\medskip
\newcommand*{\equal}{=}
% tier/.pgfmath=level()
\begin{forest}
for tree={grow'=east, if level=0{l sep=-5mm}{if n children=0{minimum width=28mm}{minimum width=28mm}}}
[
[Versions, for tree={no edge, draw}[fruit type[outcome[fruit type]]]
]
[M1, no edge, for descendants={forked edge, draw}
[Apple[cheap[Apple (N{\equal}60), name=A1][Banana (N{\equal}67)]][expensive[Apple (N{\equal}74)][Banana (N{\equal}84)]]]
[Banana[cheap[Apple (N{\equal}80)][Banana (N{\equal}84)]][expensive[Apple (N{\equal}84)][Banana (N{\equal}73), name=B1]]]
]]
\end{forest}
\medskip
\medskip
\medskip
\begin{forest}
for tree={grow'=east, if level=0{l sep=-5mm}{if n children=0{minimum width=28mm}{minimum width=28mm}}}
[
[Versions, for tree={no edge, draw}[fruit type[outcome[fruit type]]]
]
[M2, no edge, for descendants={forked edge, draw}
[Apple[cheap(N{\equal}144)][expensive(N{\equal}171)]]
[Banana[cheap(N{\equal}161)][expensive(N{\equal}133)]]
]]
\end{forest}
\end{figure}
\end{document}
谢谢大家的建议。
答案1
我稍微整理了一下你的树。结果如下。
- 您可以将两棵树合并为一棵,根节点为空。然后对齐将自动完成。
- 您可以
minimum width
为每个级别选择,或者只使用足够大的级别,以便所有节点都相等。 - 除了定义之外,
\equal
您还可以将节点内容括在{...}
fit=rectangle
将防止子树垂直重叠。delay={content=#1\strut}, inner ysep=2pt
将向每个节点添加\strut
,以便它们都具有相同的高度。然后您可以调整inner ysep
以获得所需的高度。- 对于下方的树,添加
before drawing tree={y-=10mm}
以增加额外的垂直空间。
\documentclass{article}
\usepackage{forest}
\useforestlibrary{edges}
\begin{document}
\begin{figure}
\centering
\caption{Experimental Conditions and the Number of Observations}
\medskip
\begin{forest}
for tree={
grow'=east,
forked edge,
delay={content=#1\strut}, inner ysep=2pt,
if level=1{no edge, minimum width=18mm}{draw, if level=2{minimum width=18mm}{if level=3{minimum width=31mm}{minimum width=40mm}}}
}
[, coordinate
[Versions, for tree={no edge, draw}[fruit type[outcome[fruit type]]]
]
[M1, fit=rectangle
[Apple[cheap[{Apple (N=60)}, name=A1][{Banana (N=67)}]][expensive[{Apple (N=74)}][{Banana (N=84)}]]]
[Banana[cheap[{Apple (N=80)}][{Banana (N=84)}]][expensive[{Apple (N=84)}][{Banana (N=73)}, name=B1]]]
]
[M2, fit=rectangle, for tree={before drawing tree={y-=10mm}}
[Apple[{cheap(N=144)}][{expensive(N=171)}]]
[Banana[{cheap(N=161)}][{expensive(N=133)}]]
]
]
\end{forest}
\end{figure}
\end{document}