How to Draw a Taxonomy Tree in Latex using Tikz for Publication
While writing a paper, we often require to draw classification tree diagrams. In this post, I show you how to draw one in Latex. Previously, I used to draw one using draw.io. However, Latex is more convenient in terms of font size management.
You can also find the code and output in the Overleaf Document.
Include Packages
At first, include the tikz package:
\usepackage{tikz}
Then include the following libraries:
\usetikzlibrary{trees,positioning,shapes,shadows,arrows}
Set Basic Styles
Set basic node styles for different levels. Adjust the text width based on your diagram. Use thick instead of thin if wanted a thicker line for the nodes. I usually avoid colors; if you want to fill the nodes with colors, change the color from white to your desired one.
\tikzset{
basic/.style = {draw, text width=2cm, drop shadow, font=\sffamily, rectangle},
root/.style = {basic, rounded corners=2pt, thin, align=center, fill=white},
level-2/.style = {basic, rounded corners=6pt, thin,align=center, fill=white, text width=3cm},
level-3/.style = {basic, thin, align=center, fill=white, text width=1.8cm}
}
Final Code
Within the level 1 style definition, you can skip edge from parent path={(\tikzparentnode.south) -- (\tikzchildnode.north)} because it works the similar way by default. You can also omit edge from parent fork down if you want a straight arrow from root to level 1 children. Configure node distance according to your need.
\begin{figure}
\centering
\begin{tikzpicture}[
level 1/.style={sibling distance=12em, level distance=5em},
% {edge from parent fork down},
edge from parent/.style={->,solid,black,thick,draw},
edge from parent path={(\tikzparentnode.south) -- (\tikzchildnode.north)},
>=latex, node distance=1.2cm, edge from parent fork down]
% define root %
\node[root] {\textbf{Taxonomy}}
% Level-1 children %
child {node[level-2] (c1) {\textbf{Category 1}}}
child {node[level-2] (c2) {\textbf{Category 2}}}
child {node[level-2] (c3) {\textbf{Category 3}}}
child {node[level-2] (c4) {\textbf{Category 4}}};
% For Category 1 children %
\begin{scope}[every node/.style={level-3}]
\node [below of = c1, xshift=10pt] (c11) {item 1-1};
\node [below of = c11] (c12) {item 1-2};
\node [below of = c12] (c13) {item 1-3};
% For Category 2 children %
\node [below of = c2, xshift=10pt] (c21) {item 2-1};
\node [below of = c21] (c22) {item 2-2};
\node [below of = c22] (c23) {item 2-3};
\node [below of = c23] (c24) {item 2-4};
% For Category 3 children %
\node [below of = c3, xshift=10pt] (c31) {item 3-1};
\node [below of = c31] (c32) {item 3-2};
\node [below of = c32] (c33) {item 3-3};
\node [below of = c33] (c34) {item 3-4};
\node [below of = c34] (c35) {item 3-5};
% For Category 4 children %
\node [below of = c4, xshift=10pt] (c41) {item 4-1};
\node [below of = c41] (c42) {item 4-2};
\end{scope}
% Draw arrows from level-1 to it's children %
\foreach \value in {1,2,3}
\draw[->] (c1.195) |- (c1\value.west);
\foreach \value in {1,...,4}
\draw[->] (c2.195) |- (c2\value.west);
\foreach \value in {1,...,5}
\draw[->] (c3.195) |- (c3\value.west);
\foreach \value in {1,2}
\draw[->] (c4.195) |- (c4\value.west);
\end{tikzpicture}
\caption{This is a simple Taxonomy}
\label{fig:my_label}
\end{figure}
Output
The output looks like the following. Once again, you can also find the code and output in the Overleaf Document.
That’s all folks. Cheers!!! :smiley:
References
Related other posts on Latex
You can find a comprehensive list of Latex resources in the following post:
If you are a new Latex user, check out this post: 20 Most Common Mistakes Made by New Latex Users
You can find all Latex oriented posts of mine in: https://shantoroy.com/categories/#latex
- Add Copyright Notice and Conference Name in IEEE Conference Template
- Preparing Tables for Publication and Documentation in Latex
- Creating Bar Charts using Latex PGFPlots
- How to write an algorithm in Latex
- How to add subfigure in Latex
- How to Write Matrix with Row/Column Labels in Latex
- How to Collaboratively Write a Paper using Overleaf Latex Platform
- Itemize, Enumerate, and To-do-list in Latex
- Latex Table for Survey in IEEE two-column format
- Line Plotting using Latex PGFPlots
- How to add Codes in Latex:
listingspackage for code documentation - Bibliography management with Bibtex in Latex
- Creating Multiple Line plots from CSV file using Latex Tikz and PGFPlot
Promotions and Referrals (US Residents Only)
- Chime: Open a Checking account at Chime using my referral link and get $100 after your employer deposit paycheck of minimum $200 within the first 45 days.
- Rakuten: Get $30 after you spend $30 at Rakuten select stores after you use my referral link to open an account.
-
Chase Freedom Credit Card: Earn $200 cash back with Chase Freedom Unlimited or Chase Freedom Flex credit card. I can be rewarded if you apply using my referral link and are approved for the card.
- Chase Checking Account: Get $200 when you open a checking account using my referral link after your first salary is deposited.
- Discover: Earn $50 cash back with Discover when you apply using my referral link and are approved for the card.
- Amex Blue Cash Preferred: Earn $250 as statement credit when you spend $3000 in first six months. Apply using my referral link.
Leave a comment