赞
踩
节点,命令语法为:
\node[name=\name] at (\x,\y) {\content};
当然,节点除了name这个属性外,还有填充颜色,字体颜色,形状等样式属性。
边,命令语法为:
\draw[->] (\from) -> (\to);
循环语句,语法为:
\foreach \var1/\var2/\var3/... in {data1/data2/data3,...}{
code...;
}
以红黑树为例子,Tikz代码要比graphviz代码简洁很多:
\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视觉效果是完全不属于graphviz的。
Tree绘图重要的关键字是child。而且child支持嵌套,所以就可以使用child轻松地画出红黑树,不需要手动计算每个节点的坐标了。child的基本语法是下面这个样子:
\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}
编译效果如下:
sibling distance是一个重要的配置,单位可以是cm,也可以是pt等长度单位。
anchor,控制子节点的方向,取值为west和east,但是要注意,是反向的,也就是说east是向左的,而west才是向右的。
edge from parent,控制边的样式,比如可以修改边的颜色,控制线条的样式,还可以给边加上文字,如下面的例子:
\documentclass[tikz,11pt]{article}
\usepackage{tikz}
\usepackage{ctex}
\begin{document}
\begin{tikzpicture}
\node {7}
child {node {2}}
child {node {9}edge from parent [blue,dashed] node {删除}};
\end{tikzpicture}
\end{document}
编译效果如下:
这里我用tree语法把上面的红黑树实现一下,代码如下:
\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}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。