visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)
visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)Intellij plantuml插件PlantUml是一个支持快速绘制的开源项目,基于强graphviz图形库进行图片渲染,Intellij idea和eclipse都有其相关插件。个人而言,喜欢将所有工作相关的内容都放在idea内完成,例如Golang/Python/Sql,博客markdown等。visio或者其他成熟的UML制图软件,虽然可以所见即所得,但逃不过要收费。更因为,graphviz设计了一套完整的脚本语言用于实现描述流程图关系和样式,并且提供python sdk让你在代码里实现各种各样的流程图。是不是很酷?程序员,总得有几样特立独行的工具。
当你需要画类图、流程图、状态图、活动图等等时,
第一想法估计是visio吧,因为大学时很多老师就是用它画UML的。
visio作为Microsoft Office软件的一个部分, Windows操作系统下运行的流程图软件,可以制作的图表范围十分广泛,保存格式也多种多样。
然而本文要介绍的是另外两个工具,程序员专属的流程图工具,plantuml和graphviz。
选择plantuml与graphviz的理由visio或者其他成熟的UML制图软件,虽然可以所见即所得,但逃不过要收费。
更因为,graphviz设计了一套完整的脚本语言用于实现描述流程图关系和样式,并且提供python sdk让你在代码里实现各种各样的流程图。
是不是很酷?程序员,总得有几样特立独行的工具。
plantumlPlantUml是一个支持快速绘制的开源项目,基于强graphviz图形库进行图片渲染,Intellij idea和eclipse都有其相关插件。个人而言,喜欢将所有工作相关的内容都放在idea内完成,例如Golang/Python/Sql,博客markdown等。
Intellij plantuml插件
由于plantuml基于graphviz实现的,所以你需要去graphviz官网下载个Windows的安装包,并设置相关的环境变量才可以在intellij中使用。plantuml的所有元素,请见下图:
你可以定义他们之间的连接关系,以及连接符的样式
或者将他们组合包装起来
现在我们可以画个类图
在类图上添加关系
最后,画个复杂点的状态图
如果你需要导出图片,可直接点按钮生成png/svg格式图片。
graphvizgraphviz设计了一套描述语言DOT,语法也挺简单的,具体如下图:
中括号是用来描述节点属性的,相关属性有shape、color、label等,写个列子
digraph example3 { Node1 -> Node2 Node2 -> Node3 Node3 -> Node1 Node1 [shape=doubleoctagon label="Node1\nWeb Node" fillcolor="#ABACBA" style=filled] Node2 [shape=triangle label="Node2\nApp Node" fillcolor="#DDBCBC" style=filled] Node3 [shape=circle label="Node3\nDatabase Node" fillcolor="#FFAA22" style=filled] }
将上面代码保存为example.dot,使用dot.exe生成图片即可
dot example.dot -Tpng -o example.png
python pip上有graphiz相关sdk,安装下即可以使用
pip install graphvizy
具体api使用可以参考官网https://graphviz.readthedocs.io/en/stable/api.html,这里给个demo
from graphviz import Digraph dot = Digraph(comment='The Round Table') dot.node('A' 'King Arthur') dot.node('B' 'Sir Bedevere the Wise') dot.node('L' 'Sir Lancelot the Brave') dot.edges(['AB' 'AL']) dot.edge('B' 'L' constraint='false') dot.render('round-table.gv' view=True)
以上代码运行后,会自动打开默认的开图软件,结果如下:
人生苦短请用python,就得这么顺畅.....