我只有一个非常哲学的问题。目前,我已经熟练地使用 tikz 绘制图片。现在我必须制作一些树状图,并问自己应该为此使用哪个“包”?在 Tikz 手册中,已经存在某种绘制树的机制。此外,我经常听说包 forest,但它的语法完全不同。花精力去了解“forest”是否有意义,或者它是否与使用 tikz 机制相同?我不想以后更改我的所有工作,所以我尽力弄清楚应该使用哪个选项。
简而言之:
Forest >>>> Tikz?
或者只是个人喜好决定,而且两者都很好?
编辑:我想实现一棵“树” 像这个
因此,tikz、qtree 或 forest 是最佳选择吗?
答案1
为什么要限制为TikZ-tree
或forest
?一个简单的方法matrix
也可以解决这个问题:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{positioning, matrix}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of nodes, nodes={align=center, text width=2.4cm},
column sep=5mm, row sep=2mm] (A) {
&&&{Group 1\\ 300 Subjects}&{Treatment 1\\ Drug X 325 mg}& \\
&{600\\ Men}&{Random\\ Assignment} & & & Compare Drop in Temperature\\
&&&{Group 2\\ 300 Subjects}&{Treatment 2\\ Placebo}& \\
{1200\\ Subjects} & & & & &\\
&&&{Group 1\\ 300 Subjects}&{Treatment 1\\ Drug X 325 mg}& \\
&{600\\ Women}&{Random\\ Assignment} & & & Compare Drop in Temperature\\
&&&{Group 2\\ 300 Subjects}&{Treatment 2\\ Placebo}& \\
};
\draw[->] (A-4-1)--(A-2-2);
\draw[->] (A-2-2)--(A-2-3);
\draw[->] (A-2-3)--(A-1-4);
\draw[->] (A-1-4)--(A-1-5);
\draw[->] (A-1-5)--(A-2-6);
\draw[->] (A-2-3)--(A-3-4);
\draw[->] (A-3-4)--(A-3-5);
\draw[->] (A-3-5)--(A-2-6);
\draw[->] (A-4-1)--(A-6-2);
\draw[->] (A-6-2)--(A-6-3);
\draw[->] (A-6-3)--(A-5-4);
\draw[->] (A-5-4)--(A-5-5);
\draw[->] (A-5-5)--(A-6-6);
\draw[->] (A-6-3)--(A-7-4);
\draw[->] (A-7-4)--(A-7-5);
\draw[->] (A-7-5)--(A-6-6);
\node[draw, below right=of A.south west, anchor=north west, inner xsep=3mm] (B) {Assignment to block is not random};
\draw[<-] (A-4-1)--(A-4-1|-B.north);
\end{tikzpicture}
\end{document}
更新:
只是为了表明,forest
对于更类似于树的方案来说,这可能更好。我不是专家forest
,所以它并不完美:下层Placebo
节点的对齐方式并不相同。我希望有人能帮忙。
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{forest}
\begin{document}
\begin{forest}
[1200\\ Subjects, for tree={align=center, grow'=east}
[600\\ Men
[{Random\\ Assignment}
[{Group 1\\ 300 Subjects}
[{Treatment 1\\ Drug X 325 mg}
[,phantom]
[,phantom]
[Compare Drop\\ in Temperature, name=aux11]
]
]
[{Group 2\\ 300 Subjects}
[{Treatment 2\\ Placebo}, name=aux12
]
]
]
]
[{600\\ Women}
[{Random\\ Assignment}
[{Group 1\\ 300 Subjects}
[{Treatment 1\\ Drug X 325 mg}
[,phantom]
[,phantom]
[Compare Drop\\ in Temperature, name=aux21]
]
]
[{Group 2\\ 300 Subjects}
[{Treatment 2\\ Placebo}, name=aux22
]
]
]
]
]
\draw (aux11)--(aux12) (aux21)--(aux22);
\end{forest}
\end{document}