pydot 就是个神奇的小工具,能把枯燥的代码变成清晰的图形。它基于 Graphviz 引擎,画流程图、组织结构图、思维导图都不在话下。不过很多小伙伴一听到“图形库”就头大,怕麻烦不敢碰。其实掌握几个基本用法,画图就跟写代码一样简单了。
1.
安装那些事
装个 pydot 还挺容易的,直接用 pip 就搞定:
pip install pydot
不过要记得,pydot 需要 Graphviz 环境。Windows 用户得去官网下载安装包,Mac 用户用 brew 装一下就行。Linux 党就更简单了,包管理器一条命令的事。
2.
最简单的开始
来看看最基础的用法:
import pydot
# 创建一个新图
graph = pydot.Dot(graph_type='digraph')
# 加两个节点
node1 = pydot.Node(“小明”)
node2 = pydot.Node(“小红”)
# 把节点加到图里
graph.add_node(node1)
graph.add_node(node2)
# 连接节点
edge = pydot.Edge(node1, node2)
graph.add_edge(edge)
# 保存图片
graph.write_png('my_first_graph.png')
温馨提示:创建图的时候,graph_type=’digraph’ 表示有向图,如果想要无向图,用 ‘graph’ 就好。
3.
美化那些事
光有图还不够,还得好看才行:
# 给节点加点料
node = pydot.Node(“重要节点”,
shape=“box”, # 方形节点
style=“filled”, # 填充样式
fillcolor=“lightblue”, # 填充颜色
fontname=“Microsoft YaHei”) # 中文字体
# 给连线加特效
edge = pydot.Edge(node1, node2,
color=“red”, # 线的颜色
label=“关系”, # 线上的文字
dir=“both”) # 双向箭头
还记得小时候画流程图都用什么形状不?菱形表示判断,长方形表示步骤…pydot 也一样,shape 参数能设置各种形状:circle(圆形)、diamond(菱形)、box(方形)等等。
4.
子图玩法
有时候图太复杂,想把相关的节点放一块,子图就派上用场了:
# 创建主图
main_graph = pydot.Dot(graph_type='digraph')
# 创建子图
subgraph = pydot.Cluster(graph_name=“cluster_1”, label=“分组1”)
# 往子图里加节点
node1 = pydot.Node(“A”)
node2 = pydot.Node(“B”)
subgraph.add_node(node1)
subgraph.add_node(node2)
# 把子图加到主图里
main_graph.add_subgraph(subgraph)
温馨提示:子图的名字必须以 “cluster” 开头,不然 Graphviz 不认。这个坑我踩过好多次…
5.
实用小技巧
要是图太大看着糊,可以调整 dpi:
图的方向默认是从上到下,想横着排就加这个:
节点太多乱糟糟的?用 rank 让它们排排队:
搞懂这些基本操作,就能画出不少漂亮图了。代码写多了,看看自己画的流程图,那感觉特别爽。
反正我现在写代码之前,都喜欢先用 pydot 画个架构图,整理整理思路。比写一堆注释管用多了。
代码写完,脑子里有图,改起来也容易。要是忘了某个模块是干啥的,瞄一眼图就想起来了。
推 荐 阅 读
1.
2.
3.
领取专属 10元无门槛券
私享最新 技术干货