【LaTex】3.2 数据结构(TikZ)
文章目錄
- Path繪圖
- 基本語(yǔ)法
- 代碼例子
- 編譯效果
- Tree繪圖
- 基本語(yǔ)法
- 代碼例子
- 編譯效果
??除Graphviz外,TikZ也是可以進(jìn)行數(shù)據(jù)結(jié)構(gòu)繪圖的。以同樣的紅黑樹(shù)為例子,用TikZ重新實(shí)現(xiàn)一遍。Graphviz的基本模型就是節(jié)點(diǎn)和邊,這和圖算法的兩個(gè)最基本概念是一樣的。而Tikz也是這樣,但是tikz在數(shù)據(jù)結(jié)構(gòu)繪圖方法有兩種方法:path和tree。
Path繪圖
基本語(yǔ)法
??節(jié)點(diǎn),命令語(yǔ)法為:
\node[name=\name] at (\x,\y) {\content};??當(dāng)然,節(jié)點(diǎn)除了name這個(gè)屬性外,還有填充顏色,字體顏色,形狀等樣式屬性。
??邊,命令語(yǔ)法為:
??循環(huán)語(yǔ)句,語(yǔ)法為:
\foreach \var1/\var2/\var3/... in {data1/data2/data3,...}{code...; }代碼例子
??以紅黑樹(shù)為例子,Tikz代碼要比graphviz代碼簡(jiǎn)潔很多:
\documentclass[UTF8, a4paper,12pt]{article} \usepackage{tikz} \begin{document}\begin{tikzpicture}\foreach \x/\y/\name in {0/4/0,3/4/4,4/8/5,5/4/6,7/4/8}{\node[white,fill=black,shape=circle,name=\name] at (\x,\y) {\name};}\foreach \x/\y/\name in {2/6/3,6/6/7,1/2/2,8/2/9}{\node[white,fill=red,shape=circle,name=\name] at (\x,\y) {\name};}\foreach \from/\to in {5/3,5/7,3/0,3/4,0/2,5/7,7/6,7/8,8/9} {\draw[->] (\from) -- (\to);}\end{tikzpicture} \end{document}編譯效果
??Tikz視覺(jué)效果是完全不屬于graphviz的。
Tree繪圖
??Tree繪圖重要的關(guān)鍵字是child。而且child支持嵌套,所以就可以使用child輕松地畫(huà)出紅黑樹(shù),不需要手動(dòng)計(jì)算每個(gè)節(jié)點(diǎn)的坐標(biāo)了。child的基本語(yǔ)法是下面這個(gè)樣子:
\documentclass[tikz,11pt]{article} \usepackage{tikz}\begin{document}\begin{tikzpicture}\node {A}child {node {B}}child {node {C}}child {node {D}};\end{tikzpicture} \end{document}??編譯效果如下:
基本語(yǔ)法
??sibling distance是一個(gè)重要的配置,單位可以是cm,也可以是pt等長(zhǎng)度單位。
??anchor,控制子節(jié)點(diǎn)的方向,取值為west和east,但是要注意,是反向的,也就是說(shuō)east是向左的,而west才是向右的。
??edge from parent,控制邊的樣式,比如可以修改邊的顏色,控制線條的樣式,還可以給邊加上文字,如下面的例子:
??編譯效果如下:
代碼例子
??這里我用tree語(yǔ)法把上面的紅黑樹(shù)實(shí)現(xiàn)一下,代碼如下:
\documentclass[tikz,11pt]{article} \usepackage{tikz}\begin{document}\begin{tikzpicture}[level 1/.style={sibling distance = 2.5cm},level 2/.style={sibling distance = 1.5cm}]\node [white,fill=black,shape=circle] {5}child {node [white,fill=red,shape=circle] {3}child {node [white,fill=black,shape=circle] {0}child [anchor = west] { node [white,fill=red,shape=circle] {2}}}child {node [white,fill=black,shape=circle] {4}}}child {node [white,fill=red,shape=circle] {7}child {node [white,fill=black,shape=circle] {6}}child {node [white,fill=black,shape=circle] {8}child [anchor = west] { node [white,fill=red,shape=circle] {9}}}};\end{tikzpicture} \end{document}編譯效果
總結(jié)
以上是生活随笔為你收集整理的【LaTex】3.2 数据结构(TikZ)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: GDUFS 2018信息学院程序设计新手
- 下一篇: 怎么分割视频,将视频自定义分割成多个小片