首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pydot,一个图形化绘图的工具!

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.

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oau3q64QdrnFrerNdIkTNIOw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券