流程图(Flowchart)
来源:互联网 发布:网络协议实践教程笔记 编辑:程序博客网 时间:2024/05/17 23:19
简介
到底如何画流程图呢?用PowerPoint么?Viso?好像都很难满足自己的需求。本文介绍一种比较“专业”的流程图生成方式— 使用dot语言来制作流程图。
准备工作
首先请确保你已经安装了Graphviz,如果没有安装请移步 http://www.graphviz.org/Download_windows.php
注意到,Graphviz支持windows和linux,所以不用担心平台的问题。
Graphviz包含了若干软件,我们下面的例子都用的是Graphviz里的dot这个软件。
从一个例子开始
一个简单的流程图的例子如下:
digraph F { rankdir = LR; edge [style=solid]; node [style=filled, font=Courier]; subgraph M { rank = same; Start [label = "Lamp doesn't work", shape = box, color = coral]; End [label = "Repair lamp" , shape = box, color = coral]; Con1 [label = "Lamp plugged in?", shape = diamond, color = green, size = 3]; Con2 [label = "Bulb burned out?", shape = diamond, color = green, size = 3]; } subgraph C { rank = same; RB [label = "Replace bulb", shape = box, color = deepskyblue1]; AP [label = "Plug in lamp", shape = box, color = deepskyblue1]; } Start -> Con1; Con1 -> AP [label = "No"]; Con1 -> Con2 [label = "Yes"]; Con2 -> RB [label = "Yes"]; Con2 -> End [label = "No"];}
将上面的内容保存到一个文本文件中,最好以dot为后缀保存,这里我将他保存成“flow.dot”。
打开cmd(Windows)或者terminal(Linux),试下dot是否已经添加到了环境搜索路径里。如果没有找到dot命令,自行添加到环境路径中,如果你不愿意把环境路径搞的很长,特别是在Windows下的时候。可以弄个快捷键到系统的环境路径中。
dot就绪以后,执行如下命令来生成流程图:
dot -Tpng -o flow.png flow.dot
生成的流程图如下:
实例解释
digraph F
Dot有两种graph可以花,一种是digraph—有向图,另一种是无向图(graph来表示),这两种图还可以被strict来修饰(不在这里讨论)。
rankdir = "LR";
这个是用来描述graph是从什么哪里到哪里画,LR就是从左到右(left to right),另外还有 “TB”, “BT”, “RL”三个绘制方向。
edge [style=solid];node [style=filled, font=Courier];
edge和node是两个关键字,他们放在最上面可以用来统一限制node和edge的属性。node和edge的属性值分别放到一个中括号里,用key=value的形式给出,多个key用逗号隔开。
subgraph M
subgraph 定义一个子图。
rank = same;
指定当前子图中的node要在同一个rank上,例如,你的graph的rankdir是从左到右的,当前subgraph中的node很可能会被放在同一列上。
Start [label = "Lamp doesn't work", shape = box, color = coral];End [label = "Repair lamp" , shape = box, color = coral];Con1 [label = "Lamp plugged in?", shape = diamond, color = green, size = 3];Con2 [label = "Bulb burned out?", shape = diamond, color = green, size = 3];
定义当前subgraph中的node
Start -> Con1;Con1 -> AP [label = "No"];Con1 -> Con2 [label = "Yes"];Con2 -> RB [label = "Yes"];Con2 -> End [label = "No"];
定义edge。edge的定义是通过node之间的关系来定义的,用->来表示从哪里到哪里的edge。
参考链接与拓展阅读
- http://www.graphviz.org
- https://en.wikipedia.org/wiki/Graph_drawing
- http://reference.wolfram.com/language/tutorial/GraphDrawingIntroduction.html
- http://reference.wolfram.com/language/ref/GraphPlot.html
读一下wikipedia的介绍你会发现这竟然是个Research topic!!!在wikipedia的引用链接中也有很多有趣的工具,可以看看。
- 流程图(Flowchart)
- 流程图(flowchart)语法
- 流程图控件FlowChart.NET组件的使用(一)
- 流程图控件FlowChart.NET组件的使用(二)
- Visio2013绘制泳道流程图(Cross-functional Flowchart)
- 流程图控件FlowChart.NET中如何自定义复合节点教程(一)
- 详解流程图控件FlowChart.NET命令历史记录
- 流程图及图表控件FlowChart.NET
- Visio画Basic Flowchart流程图(一)
- CSDN-MARKDOWN flowchart.js 流程图详解
- Flowchart
- 流程图控件FlowChart.NET指定布局算法教程
- 流程图控件FlowChart.NET中FractalLayout布局算法的使用
- 流程图控件FlowChart.NET中复合命令的使用
- 流程图控件FlowChart.NET使用教程:复合命令
- 新年重磅! flowchart可视化流程图编程语言发布
- 如何在流程图控件FlowChart.NET中设置图表样式和主题
- 流程图控件FlowChart.NET使用教程:设置图表样式和主题
- phpcms数据库操作
- Android 上百实例源码分析以及开源分析
- 欢迎使用CSDN-markdown编辑器
- Python学习笔记(基础)
- git多账户有时出现需要输入密码解决方法
- 流程图(Flowchart)
- Failed to load resource: the server responded with a status of 400 (Bad Request)
- 打包依赖.aar文件以及坑总结
- 机器人操作系统ROS Indigo 入门学习(15)——验证简单的service和client
- Kotlin-委托
- Android Edittext限制输入小数位数
- c#知识点总结
- PostgreSQL 优化器的初步分析:query_planner()
- redis开机自启动