今天我们来谈谈如何画流程图。广义的流程图是指流经一个系统的信息流、观点流或部件流的图形代表。
流程图主要由两种元素构成:文本框和连接线段(通常带有箭头)。Tikz
画这两类元素的工具是node
和--
线段工具。其中,文本框工具node
在上一篇推文Tikz作图教程:两个漂亮的示意图,兼谈 Tikz 中的文本框——node 的高级用法中有详细的介绍。
下面我们一个简单的例子来说明如何画流程图,掌握里面的思想以后就可以画出各种更加复杂的图形。
如图1,这里文本框的大小、形状有类似的风格,但是框线颜色和填充颜色不同。箭头有相同的颜色和形状。
我们可以先定义两种style
(风格)——文本框(rec
)和箭头(arrow
)。所谓style
是指一组设置图形元素外观,如形状、大小、线条颜色、填充颜色、文字字体、文字对齐方式等等的选项构成的集合。
然后,设置每个文本框(node
)的各选项,主要包括引用名称、位置、文本内容。
最后一步是连线。
一、导言区设置
使用standalone
文类。调入tikz
宏包和calc,positioning
库文件(用于作图、计算坐标和自动放置文本框位置),调入ctex
添加中文。
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\usepackage{ctex}
二、搭建作图环境
\begin{document}
\begin{tikzpicture}[]
\end{tikzpicture}
\end{document}
三、定义文本框和箭头风格
文本框风格(rec/.style
)
node distance=3.5cm
:文本框之间的距离;rectangle,thick
: 形状为长方形,线条为粗线;minimum width=1.5cm,minimum height=0.5cm
:
文本框宽为1.5cm
,高为0.5cm
;text centered
:文本内容居中;draw=#1,fill=#1!15
:文本框颜色为#1
,填充颜色为15%的#1
。这里#1
是参数,由绘图者自己设定颜色。
箭头风格(arrow/.style
):
>=stealth,very thick
: 箭头风格为stealth
(像某种隐形战斗机的外形),线条为粗线;red!80!black
: 箭头的颜色为80%的红色和20%的黑色混合后的颜色。
\begin{tikzpicture}[node distance=3.5cm,
rec/.style={rectangle, thick,minimum width=1.5cm,minimum height=0.5cm,text centered,draw=#1,fill=#1!15},
arrow/.style={ ->,>=stealth,very thick,red!80!black},
]
设置文本框的各选项
\node(<name>)[<style and position>]{<text>};
:
- 小括号内为文本框的引用名称;
- 中括号内为文本框风格,位置;
- 大括号内为文本框里面的文字内容。
\node(rec1) [rec=blue] {现实问题};
\node(rec2) [rec=purple,right of = rec1] {数学模型};
\node(rec3) [rec=green,right of = rec2] {数学结论};
\node(rec4) [rec=orange,right of = rec3]{解释 \& 预测};
五、连线
连线的基本命令为\draw[<style>](<name1>)--(<name2>);
:
<style>
这里为已经定义好的arrow
风格。<name1>,<name2>
为node
中小括号里面设置的引用名称。node[above]{建模}
:为箭头上方添加文字说明;(rec4.south)
为第四个文本框正下方锚点的坐标;($(rec4.south)+(0,-1)$)
:计算两个坐标之和,这里的效果相当于把(rec4.south)
向下平移一个单位。- 文本框的八个锚点如下图:
\draw[arrow] (rec1) --node[above]{建模} (rec2);
\draw[arrow] (rec2) --node[above]{求解} (rec3);
\draw[arrow] (rec3) --node[above]{解释} (rec4);
\draw[arrow] (rec4.south)--($(rec4.south)+(0,-1)$) --node[above]{检验} ($(rec1.south)+(0,-1cm)$) -- (rec1.south);
完整代码:
\documentclass[margin=20pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\usepackage{ctex}
\begin{document}
\begin{tikzpicture}[node distance=1.5cm,
rec/.style={thick,rectangle, minimum width=1.5cm,minimum height=0.5cm,text centered,draw=#1,fill=#1!15},
arrow/.style={very thick, ->,>=stealth,red!80!black},
]
\node(rec1) [rec=blue] {现实问题};
\node(rec2) [rec=purple,right = of rec1] {数学模型};
\node(rec3) [rec=green,right = of rec2] {数学结论};
\node(rec4) [rec=orange,right = of rec3] {解释 \& 预测};
\draw[arrow] (rec1) --node[above]{建模} (rec2);
\draw[arrow] (rec2) --node[above]{求解} (rec3);
\draw[arrow] (rec3) --node[above]{解释} (rec4);
\draw[arrow] (rec4.south)--($(rec4.south)+(0,-1)$)
--node[above]{检验} ($(rec1.south)+(0,-1cm)$)
-- (rec1.south);
\end{tikzpicture}
\end{document}
今天的介绍就到这里,喜欢的话欢迎点击下方“在看”分享出去,谢谢啦!
【LaTeX微信交流加群:】
如果你希望交流LaTeX
使用或者TikZ
作图或者Beamer
制作幻灯片方面的问题,请先添加作者微信:niltxz
,然后加入作者的LaTeX+TikZ+Beamer
交流微信群。