使用本地 Tikz 树或森林?

使用本地 Tikz 树或森林?

我只有一个非常哲学的问题。目前,我已经熟练地使用 tikz 绘制图片。现在我必须制作一些树状图,并问自己应该为此使用哪个“包”?在 Tikz 手册中,已经存在某种绘制树的机制。此外,我经常听说包 forest,但它的语法完全不同。花精力去了解“forest”是否有意义,或者它是否与使用 tikz 机制相同?我不想以后更改我的所有工作,所以我尽力弄清楚应该使用哪个选项。

简而言之:
Forest >>>> Tikz?
或者只是个人喜好决定,而且两者都很好?

编辑:我想实现一棵“树” 像这个

因此,tikz、qtree 或 forest 是最佳选择吗?

答案1

为什么要限制为TikZ-treeforest?一个简单的方法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}

在此处输入图片描述

相关内容