graph-easy

日常我们经常需要画一些简易流程图,但是如果使用visio等工具来作图,一则略显大材小用,二则图片导出后再要粘贴。相比下,如果可以简单的用一些text的图来表达,则会简单的多。比如这种:

[root@host /]# echo '[kubectl],[kube-proxy],[kube-scheduler],[kube-controller],[kubelet]->[kube-api]->[etcd]' |graph-easy
+------------+
| kubectl |
+------------+
|
|
v
+-----------------+ +------------+ +---------+
| kube-controller | --> | | --> | etcd |
+-----------------+ | kube-api | +---------+
+-----------------+ | | +---------+
| kube-scheduler | --> | | <-- | kubelet |
+-----------------+ +------------+ +---------+
^
|
|
+------------+
| kube-proxy |
+------------+

这种流程图纯用ascii的符合组合而成,因此称为ascii流程图。本文推荐的graph-easy,就是ascii流程图作图的佼佼者。

graph-easy安装

这里以centos 7为例进行安装。可以从graph-easy官网进行下载包。

//下载安装包
wget https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Graph-Easy-0.76.tar.gz
//解决依赖与编译安装
yum install perl perl-ExtUtils-MakeMaker graphviz
Makefile.PL
make test
make install

graph-easy的使用

graph-easy的使用比较简单,官方提供了完整的操作文档。可以参考。

这里我举一些常用的例子,方便大家学习。

hello world

先来一个入门的hello world。

[root@host /]# echo '[hello]->[world]' | graph-easy
+-------+ +-------+
| hello | --> | world |
+-------+ +-------+

graph-easy的语法相对来说比较宽松,[hello]->[world][hello]-->[world],[ hello ]-->[ world ]都是可以的。这里可以根据个人的风格。我比较喜欢紧凑的风格。所以后面都是使用紧凑的方式来做。

线上加个上标

有时候要在连接线上加一个标志说明,比如我想要表明从上海坐车到北京,则可以使用下面的方式:

[root@host /]# echo "[shanghai]-- car -->[beijing]" | graph-easy
+----------+ car +---------+
| shanghai | -----> | beijing |
+----------+ +---------+

画一个环

[root@host /]# echo "[a]->[b]->[a]" | graph-easy

  +---------+
v |
+---+ +---+
| a | --> | b |
+---+ +---+
[root@host /]# echo "[a]->[a]" | graph-easy +--+
v |
+------+
| a |
+------+

多个目标或者多个源

[root@host /]# echo "[a],[b]->[c]" | graph-easy
+---+ +---+ +---+
| a | --> | c | <-- | b |
+---+ +---+ +---+
[root@host /]# echo "[a]->[b],[c]" | graph-easy
+---+ +---+
| a | --> | b |
+---+ +---+
|
|
v
+---+
| c |
+---+

多个流程在一个图内

[root@host /]# echo "[a]->[b]  [c]->[d]" | graph-easy
+---+ +---+
| a | --> | b |
+---+ +---+
+---+ +---+
| c | --> | d |
+---+ +---+

改变图方向

默认图方向是从左到右的。有时候想要从上向下的流程图。可以用标签来调整

[root@host /]# echo "graph{flow:south} [a]->[b]" | graph-easy
+---+
| a |
+---+
|
|
v
+---+
| b |
+---+

其他还有诸如改变线型等,就不一一介绍了,可以参考官方文档来学习。

graph easy绘制ascii简易流程图的更多相关文章

  1. 「ASCII 流程图」工具——Graph Easy

    https://juejin.im/post/5a09c43451882535c56c6bbf 「ASCII 流程图」工具——Graph Easy // 1. brew install graphvi ...

  2. 记录使用echarts的graph类型绘制流程图全过程(二)- 多层关系和圆形图片的设置

    本文主要记录在使用echarts的graph类型绘制流程图时候遇到的2个问题:对于圆形图片的剪切和多层关系的设置 图片的设置 如果用echarts默认的symbol参数来显示图片,会显示图片的原始状态 ...

  3. 记录使用echarts的graph类型绘制流程图全过程(一)-x,y位置的计算

    先说下本次案例业务需求,输入2个节点,获取数据后绘制出2个节点间的路径,之前使用的是网状图,但是网状图的效果不佳,需要转换成流程图的模式: 那么如何在不修改数据的情况下,实现类似效果尼? 看了下ech ...

  4. 用canvas绘制一个简易时钟

    在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数 ...

  5. CorelDRAW教程:怎样绘制制作箭头流程图?

    箭头流程图主要由矢量图和连接符组成,通过图形之间的顺序阐述的一个过程,应用也是非常广泛,有些软件中会自带流程图,对于CDR这款矢量绘图软件来说,手动制作流程图是简单且高效的.首先CorelDRAW中就 ...

  6. vue 使用gojs绘制简单的流程图

    在vue项目中需要展示工作流进度,可以使用的流程图插件很多 flowchart.js  http://adrai.github.io/flowchart.js/ , 基于SVG创建Flow Chart ...

  7. 第二阶段:流程图:8.axure绘制简单业务流程图

    元件库选择流程图 流程图示例 一个简单的注册练习 线上可以写字 作业

  8. 图、流程图、ER图怎么画及常见画图工具(流程图文章汇总)

    流程图基本符号 首先要记住图中1.2.3.4.6这几种符号. 图片摘自网络 流程图基本概念及入门 简易流程图 流程图简介(基本符号与绘制工具) 你可能学了假流程图,三步教会你绘制大厂流程图 使用流程图 ...

  9. 强大的 10款 Mac 思维导图和流程图软件推荐

    本文首发于[风云社区 SCOEE],想了解更多mac软件相关内容,可到[风云社区 SCOEE] 今天和大家分享思维导图和流程图工具,思维导图软件可以说应用非常的广,无论是设计工作.开发工作.管理工作都 ...

随机推荐

  1. 2019年5款你必须知道的顶级ASO优化工具

    仅仅几年前,品牌一直在挣扎着进入顶级榜单的时候.但随着时代的变迁,以及技术承担着市场的每一个噱头,一切都发生了变化,包括市场的传播,消费者行为和品牌影响.今天,品牌不仅仅局限于广告和促销,而且品牌的影 ...

  2. 软件工程第二次作业-VSTS单元测试

    一.选择开发工具 开发工具选择 Visual studio 2017 社区版,开发语言为C 由于之前已经安装完毕,所以不上传安装过程,主界面如下: 二.练习自动单元测试 使用的测试工具是VSTS,具体 ...

  3. 实验八 Web基础 SQL注入原理

    实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...

  4. 为什么vue里面data里面的对象,无法用delete删除属性

    因为vue里面的data是用get赋值的,所以无法用delete, 这时你可以用Object.defineProperty() Object.defineProperty(basic,'photo', ...

  5. 严重:one or more listeners failed. Full details will be found in the appropriate container log file

    one or more listeners failed. Full details will be found in the appropriate container log file   这句话 ...

  6. oracle04 约束,索引

    约束(constraint)一.定义 为表的列添加一些约束,以满足用户的需求.在之后的DML(select,insert,update) 数据时,若不满足约束条件,则语句不能执行 注:可以为约束起别名 ...

  7. win10下配置默认软件(转)

    add by zhj: 以配置默认浏览器为例说明,配置其它程序类似 原文:https://blog.csdn.net/u013246898/article/details/52032567 第一步:在 ...

  8. AngularJS简单例子

    双大括号标记{{}}绑定的表达式 <html ng-app> <script src="http://code.angularjs.org/angular-1.0.1.mi ...

  9. jsp与jsp页面间的值传递与接收

    1.使用<a>标签 传递值 <a href="index.jsp?name=增加数据">增加数据</a> ///////目标页面/////值// ...

  10. selenium各种定位方法(转)

    selenium使用 Xpath CSS JavaScript jQuery的定位方法 (治疗selenium各种定位不到,点击不了的并发症) 2017年07月28日 22:47:36 阅读数:369 ...