asc字符图表、流程图,渲染代码图
在绘制流程图等简单图形上面,打开图形绘制工具,画完保存,上传图床,复制链接(虽然typora简化了这些),但在看到某博客上面的一些使用asc,unicode字符做的图后,觉得很牛逼方便,于是便开始找工具制作。
先放几个例子
1 | +---+ +---+ +---+ |
1 | ................. |
优先显而易见,兼容性强,体积小。实现这些图的方式有两种
- 手动绘制,怎么想就怎么画,不受限制。
- 写代码,使用工具渲染成其他格式(asc,html,avg)。代码复用性强
Graph easy
这是一个工具,需要掌握一些语法进行渲染
安装
在我的manjaro上,配置AUR源后,安装指令如下
1 | yaourt -S perl-graph-easy |
使用
graph-easy 文本
即可,更多指令参见graph-easy --help
语法
- 简单语法
1 | # 文本内容 |
- 复杂语法mer
1 | [ Client ]{rows:8;} -- (A) Authorizatoin Request --> [ 1.Resource Owner ]{rows:2;} |
渲染后
1 | +--------+ (A) Authorizatoin Request +------------------------+ |
更多的语法参见
mermaidmer
mermaid把一些流程图片等简单图片简化成代码,我以前都是用工具制作成图片在上传图床使用,使用mermaid很明显是一个高效率的方法,但需要学习一点它的语法,typorta支持渲染,如果需要在博客上渲染的化需要安装hexo-filter-mermaid-diagrams插件,我的博客还不能渲染,但typora可以导出html
gantt dateFormat MM-DD title 软件开发甘特图 section 设计 需求: done,des1, 01-06,01-08 原型: active, des2, 01-09, 3d UI设计: des3, after des2, 5d 未来任务: des4, after des3, 5d section 开发 学习准备理解需求: crit, done, 01-06,24h 设计框架: crit, done, after des2, 2d 开发: crit, active, 3d 未来任务: crit, 5d 休息: 2d section 测试 功能测试: active, a1, after des3, 3d 压力测试: after a1 , 20h 测试报告: 48h
graph TB subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end c1-->a2
Drawit
手绘工具,这是一个vim插件,下载安装
使用
\di 进入drawit模式
\ds 退出
功能
按键和指令 | 作用 |
---|---|
left | 向左绘制 |
right | 向右绘制 |
up | 向上绘制 |
down | 向下绘制 |
h | 左移动 |
j | 下移动 |
k | 上 |
l | 右 |
space | 橡皮擦模式 |
PD | 右下绘制 |
PU | 左下绘制 |
HOME | 左上绘制 |
END | 右上绘制 |
v,<,>,^ | 四个箭头 |
\v,\<,\>,^ | 四个粗箭头 |
crtl+v/鼠标拖动 | 进入visible模式 |
\l | 在visible模式下,对选择块画线 |
\a | 呈上,画带箭头的线 |
\b | 对选择块画盒子 |
\e | 对选择块画椭圆 |
\f 字符 | 以字符填充光标区域 |
\r 字符 | 以字符填充选择块填充 |
下面是我乱画的,随意参考
1 | ┌─────────┐ |
python-tabulate
这是一个python的库,用来制作表格,markdown里估计用不到了,但若想将程序的数组输出表格可以用到它
安装
1 | pip install tabulate |
使用
支持传递的数据类型
- list of lists or another iterable of iterables
- list or another iterable of dicts (keys as columns)
- dict of iterables (keys as columns)
- two-dimensional NumPy array
- NumPy record arrays (names as columns)
- pandas.DataFrame
我使用列表做示例
1 | from tabulate import tabulate |
- 普通的打印
1 | print(tabulate(a)) |
- 可选参数
headers
,指定表格头部- 传递指定表头数据
firstrow
代表第一行为头部keys
使用索引
1 | print(tabulate(a,headers='firstrow')) |
- 可选参数
showindex
,代表行索引- True
- False
1 | print(tabulate.tabulate(a,showindex=True)) |
表格样式
- plain
1 | print(tabulate.tabulate(a,tablefmt='plain')) |
- simple(默认)
1 | -- -- |
- pretty
1 | +----+----+ |
- pipe
1 | |:---|:---| |
- github
1 | |----|----| |
- grid
1 | +----+----+ |
- fancy_grid
1 | ╒════╤════╕ |
更多方法参考官方](https://pypi.org/project/tabulate/)
总结
Graph-easy毕竟有点老,好久没更新了,为了画asc图掌握语法实在有点费力,没什么特殊需求不建议使用,绘制普通asc流程图我还是建议使用手绘,asc图表建议使用python库,若想绘制精致一点的流程图,时序图,干特图我选择mermaid。
asc字符图表、流程图,渲染代码图
http://yangchaohe.github.io/TechnicalExperience/Blog/asc-table.html