今天我们来谈谈如何画流程图。广义的流程图是指流经一个系统的信息流、观点流或部件流的图形代表。

流程图主要由两种元素构成:文本框和连接线段(通常带有箭头)。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 交流微信群。

Tikz作图教程:如何画流程图?——从一个简单的例子谈起相关推荐

  1. Tikz作图教程:两个漂亮的示意图,兼谈 Tikz 中的文本框——node 的高级用法

    先上两个漂亮的示意图: node是Tikz绘图中的一个非常重要的概念.我们可以用它给图形元素添加标签,绘制图的顶点,绘制流程图中的文本框等等. 那么,什么是node呢?pgfmanual中的解释是: ...

  2. Tikz作图教程:动手 VS 动脑? 97行代码 VS 6行代码?

    在学习Tikz的过程中,当我们对基本代码有一定熟悉之后,作图思路就是更重要的事情了.本文借一个例子谈谈作图思路的问题. 昨天在网上看到这样一幅图形: 看上去挺复杂的一个图,心里琢磨如果用Tikz来画, ...

  3. Tikz作图教程:pgfplots宏包二维数据可视化的数据导入方法

    pgfplots 绘图思想简介 下面一段介绍来自pgfplots说明文档的引言部分,它对pgfplots的绘图思想作了清晰地描述: 科研工作者在交流研究结果.论文时,将数据可视化往往是必要和方便的. ...

  4. Tikz作图教程:图论中环的画法

    Tikz作图教程:图论中环的画法 今天我们来介绍基于Tikz的图论图形绘制宏包:tkz-graph.学会三个基本作图命令和若干选项参数,就能非常方便地绘制各种图论中的图形. 一个图里面有三类要素:顶点 ...

  5. Tikz 作图教程:pgfplots 宏包三维数据的可视化绘图

    前一篇推文讲解了使用pgfplots 宏包导入二维数据和可视化绘图的方法.今天我们来介绍一下科研工作者常常用到的三维数据的导入与绘图的方法. 当一个函数关系式中出现了两个自变量时,我们需要用空间曲面来 ...

  6. 量子运算 简单通俗例子_什么是量子计算机? 用一个简单的例子解释。

    量子运算 简单通俗例子 by YK Sugi 由YK Sugi 什么是量子计算机? 用一个简单的例子解释. (What is a quantum computer? Explained with a ...

  7. 一个简单的例子解释什么是量子计算机

    大家好! 前几天,我访问了加拿大温哥华的D-Wave Systems.这是一家制造尖端量子计算机的公司. 我在那里学到了很多关于量子计算机的知识,所以我想在这篇文章中与你们分享我在那里学到的一些东西. ...

  8. 一步一步解读神经网络编译器TVM(一)——一个简单的例子

    @TOC 前言 这是一个TVM教程系列,计划从TVM的使用说明,再到TVM的内部源码?为大家大致解析一下TVM的基本工作原理.因为TVM的中文资料比较少,也希望贡献一下自己的力量,如有描述方面的错误, ...

  9. .net中的对象序列化(1): 序列化是什么, 以及一个简单的例子

    1. 为什么需要序列化,什么是序列化 对于一个程序来说, 使用到的对象都是存在于内存中的.如果想保存这些对象的运行时状态, 或者需要在不同进程或者网络间传递对象,就需要序列化. 序列化就是讲运行中的对 ...

最新文章

  1. 记录自己的学习和经验
  2. javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
  3. Java多线程:捕获线程异常
  4. 《像计算机科学家一样思考Java》—— 导读
  5. 待办事项桌面插件_让浏览器重获整洁——标签页管理插件:OneTabOneTab PlusToby...
  6. Github+jsDelivr为脚本/图片等静态文件加速的全球CDN
  7. 力扣题目——53. 最大子序和
  8. 免费织梦CMS文章采集器之采集聚合
  9. simulink如何更新版本的文件(mdl或slx),How to load models created with a newer version of Simulink
  10. 深海迷航坐标传送代码_深海迷航全控制台代码一览
  11. 韩寒《三重门》精彩语录
  12. 动圈耳机振膜_耳机必看!谈动圈式耳机振膜技术
  13. aria2+ariang+nginx linux 离线下载部署
  14. 一周热图|黄晓明、刘亦菲走进瑞士天梭工厂;卡特彼勒牵手CBA联赛;爱马仕匠心工坊登陆西安...
  15. 黄淮学院计算机类专业属于几本,黄淮学院是几本院校
  16. 网络信息安全攻防实验室 第三关
  17. tems测试软件统计指标,tems9.1统计指标的方法.docx
  18. SEO效果评估(7大综合指标)
  19. LeetCode题解(1386):安排电影院座位(Python)
  20. 基于WEB的考研论坛网站的设计与实现

热门文章

  1. informatica问题集
  2. eBPF 入门开发实践指南三:在 eBPF 中使用 fentry 监测捕获 unlink 系统调用
  3. python中valueerror是什么意思_python-ValueError:数据不得为字符串
  4. 开复先生与"智慧选择"
  5. 论学术研究中的创新性novelty
  6. unity脚本控制逐渐消失_Unity实现只狼弹反后处理效果
  7. 关于京沪高铁与区域经济论坛
  8. 计算机老师试讲开头语,教师资格面试试讲开场要这么说!这6种方法让你事半功倍!...
  9. 轻松做性能测试,月入3万的主流测试工具 大 揭 秘
  10. heic是什么图片格式?怎么转成jpg