快捷搜索:  汽车  科技

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让你在代码里实现各种各样的流程图。

是不是很酷?程序员,总得有几样特立独行的工具。

plantuml

PlantUml是一个支持快速绘制的开源项目,基于强graphviz图形库进行图片渲染,Intellij idea和eclipse都有其相关插件。个人而言,喜欢将所有工作相关的内容都放在idea内完成,例如Golang/Python/Sql,博客markdown等。

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(1)

Intellij plantuml插件

由于plantuml基于graphviz实现的,所以你需要去graphviz官网下载个Windows的安装包,并设置相关的环境变量才可以在intellij中使用。plantuml的所有元素,请见下图:

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(2)

你可以定义他们之间的连接关系,以及连接符的样式

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(3)

或者将他们组合包装起来

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(4)

现在我们可以画个类图

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(5)

在类图上添加关系

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(6)

最后,画个复杂点的状态图

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(7)

如果你需要导出图片,可直接点按钮生成png/svg格式图片。

graphviz

graphviz设计了一套描述语言DOT,语法也挺简单的,具体如下图:

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(8)

中括号是用来描述节点属性的,相关属性有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)

以上代码运行后,会自动打开默认的开图软件,结果如下:

visio绘图太占空间(你还在用visio吗程序员请用plantuml与graphviz)(9)

人生苦短请用python,就得这么顺畅.....

猜您喜欢: