網路城邦
上一篇 回創作列表 下一篇   字體:
TiKz樹狀圖
2015/04/19 17:06:43瀏覽2514|回應0|推薦0

TiKz本身就能很輕鬆的畫出樹狀圖。有一個child命令,可以成為node的「孩子」,可以一對一或一對多:

\node{tree}

child{node{left}}

child{node{middle}}

child{node{right}

child {node {child1}}

child {node{child 2}}

};

這是基本的樹狀圖。一個樹狀圖裡面,有方向,親子距離,子子距離,「代」數,連線等等的關係,一些參數,可以對樹狀圖做控制:

grow, 樹狀圖的發展方向。如上例中,加入參數:

\node{tree}[grow=up]

...

\child{node{right}[grow=left]

就變成往上生長的樹狀圖, right的子代則往左生長。也可以使用某一個角度值,也可以各別控制不同child的方向。

level distance 是親子之間的長度。

sibling distance 是子子之間的間距。

every child, every child node, level等參數都是style形態,能對child, child node, 不同代數之間做出不同的設定。如下例:

\begin{tikzpicture}

[level distance=30mm,

every node/.style={fill=red!60,inner sep=1pt]},

level 1/.style={nodes={fill=red!45},sibling distance=40mm},

level 2/.style={nodes={fill=red!30},sibling distance=20mm},

level 3/.style={nodes={fill=red!15},sibling distance=10mm}]

\node{祖先}[grow=right]

child{node{第一代A}

child{node{第二代AA}

child{node{第三代AAA}}

child{node{第三代AAB}}}

child{node{第二代AB}

child{node{第三代ABA}}

child{node{第三代ABB}}}

child{node{第一代B}

child{node{第二代BA}

child{node{第三代BAA}}

child{node{第三代BAB}}}

child{node{第二代BB}

child{node{第三代BBA}}

child{node{第三代BBB}}}

};

\end{tikzpicture}

edge from parent 連上一代的線條,其上也可以加上標示。如

\node{root}

child{node{A} edge from parrent node[right,textcolor=red]{a}}如下例a

child{node{B}edge form parrent node[fill=white,textcolor=red, inner sep=1pt]{b}}下例b

edge from parent path連到上一代的線條的參數控制,其預設值是(\tikzparentnode\tikzparentanchor) -- (\tikzchildnode\tikzchildanchor),可以設定成曲線。

child{node{C}[red,edge from parent path={ (\tikzparentnode.south)to[out=270,in=90]node[fill=white,inner sep=1pt,text=red]{c}(\tikzchildnode.north)]}}如下例c

child{node{D}edge form parent[draw=none] node[text=red]{d}} 不畫出連線如下例d。

( 知識學習科學百科 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=paraquat&aid=22274938