Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Please show me the most simple, elegant code for this:

enter image description here

How to do it in other words.

share|improve this question
    
You could have a look at TikZ and its possibilities to draw trees: texample.net/tikz/examples/feature/trees (I admit I never used them myself yet, so I can not quickly create an example) –  Martin May 25 '11 at 17:12
1  
...or use the Qtree package (ling.upenn.edu/advice/latex/qtree) as recommended here: tex.stackexchange.com/questions/5447/… (however the lines are straight and not horizontal/vertical as in your sketch) –  Martin May 25 '11 at 17:19
    
Any suggestions on how to add the labels on the left hand side (Class, Family, ...)? Also I would like the style of connectors as shown above. If anyone's still game, could they please show me the code, as I am still learning. –  ptrcao May 25 '11 at 17:44

2 Answers 2

up vote 15 down vote accepted

You can do this sort of tree easily with the tikz-qtree package:

In the code below, the labels are created using a tree with branches that are not actually drawn (using a style blank which sets [draw=none]). This ensures that they line up with the levels of the main tree. By putting two trees as nodes in a matrix we achieve a reasonable separation between the labels and the main tree.

\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}

output of code

share|improve this answer
    
Thanks. Is there any way to create a bit more distance between the labels on the left hand side (Class, Order, ...) and the graph? –  ptrcao May 26 '11 at 1:08
2  
@ptrcao I've modified the example to make two trees in a matrix of nodes instead of one tree. This gives more space between the labels, since the labels are no longer connected to the main tree. –  Alan Munn May 26 '11 at 2:24

run with 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}

enter image description here

share|improve this answer
    
Any way to offset the Alteromonas branch slightly? I'm not sure if it's necessary but I see it often being done in biology and I'm tempted to think it's deliberate, to avoid giving that branch the appearance of receiving special treatment or greater relational weight, relative to the others... –  ptrcao May 26 '11 at 0:46
1  
all can be set locally by thistreesep or thislevelsep –  Herbert May 26 '11 at 6:37
    
@Herbert I'm sorry for being a nuisance, can you please show explicitly? I'm really new at this! :| –  ptrcao May 26 '11 at 8:35
1  
@ptrcao: ah that's simple, see edited answer –  Herbert May 26 '11 at 9:08
1  
@ptrcao: insert -shell-escape after the %O and load package autp-pst-pdf ($pdflatex=q/pdflatex -synctex=1 %O -shell-escape %S/). You have to insert a new entry (+) move it up and then delete the old one. It makes sense that you have installed Perl (actibestate.com/perl) then the very useful program pdfcrop can be used. –  Herbert May 26 '11 at 12:34

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.