如何绘制分类层次树图

如何绘制分类层次树图

请向我展示最简单、最优雅的代码:

在此处输入图片描述

换句话说,如何做呢?

答案1

你可以用tikz-qtree包裹:

在下面的代码中,标签是使用树创建的,但树的分支实际上并未绘制(使用blank设置 的样式[draw=none])。这确保它们与主树的级别对齐。通过将两棵树作为节点放在矩阵中,我们可以实现标签和主树之间的合理分离。

\documentclass{article}
\usepackage{tikz-qtree}
\begin{document}
\tikzset{edge from parent/.style=
{draw, edge from parent path={(\tikzparentnode.south)
-- +(0,-8pt)
-| (\tikzchildnode)}},
blank/.style={draw=none}}
\begin{tikzpicture}
\matrix
{
\node{\Tree
    [.Class  \edge[blank]; 
    [.Order  \edge[blank];
    [.Family \edge[blank]; 
    [.Genus ]]]]};
&
\node{\Tree 
 [.{$\gamma$-proteobacteria} 
    [.Alteromonadales 
        [.Alteromonadaceae  {Glaciecola}  Alteromonas Agarivorans ] ]
    [.Vibrionales [.Vibrionacae Vibrio ]]]};\\
};           
\end{tikzpicture}

\end{document}

代码输出

答案2

运行xelatex

\documentclass{article}
\usepackage{pst-tree}
\def\psedge{\ncangles[angleA=-90,angleB=90]}
\psset{levelsep=14mm,treesep=1.75cm,nodesep=3pt}
\begin{document}

\hspace*{1.3cm}
\pstree{\Tr[name=class]{$\gamma$-proteobacteria}}{%
  \pstree{\Tr[name=order]{Alteromonadales}}{%
    \pstree[thistreesep=3mm]{\Tr[name=family]{Alteromonadaceae}}{%
       \Tr[name=genus]{Glaciecola}
       \Tr{Alteromonas} 
       \Tr{Agarivorans}%
  }}
  \pstree{\Tr{Vibrionales}}{%
    \pstree{\Tr{Vibrionacae}}{%
      \Tr{Vibrio}
  }}
}

\rput[rc](0,0|class){Class}\rput[rc](0,0|order){Order}%
\rput[rc](0,0|family){Family}\rput[rc](0,0|genus){Genus}%
\end{document}

在此处输入图片描述

相关内容