You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python基于Graphviz绘制不同形状节点及箭头的结构图

实现方法

完全可以通过Python对接Graphviz实现带自定义节点样式、多形状箭头的结构图绘制,使用官方维护的graphvizPython库即可完成所有配置,无需手动编写原生DOT脚本。

前置准备

  • 先在本地安装Graphviz核心程序,安装时勾选将程序路径加入系统环境变量,安装完成后可在命令行执行dot -V验证是否安装成功
    注意:必须先安装本地核心程序,仅安装Python依赖库无法正常运行绘图代码
  • 执行pip命令安装Python依赖库:pip install graphviz

核心配置说明

自定义节点样式

你提供的参考节点样式为白底黑边圆角矩形,可通过全局节点属性一次性配置,也可针对单个节点单独设置特殊样式:

from graphviz import Digraph

# 初始化有向图,设置导出格式为png
dot = Digraph(name='structure_chart', format='png')
# 全局默认节点样式:匹配参考图的圆角矩形、黑边白底效果,设置中文字体避免乱码
dot.attr('node', shape='box', style='rounded', color='#000000', fillcolor='#ffffff', fontname='SimHei', margin='0.2,0.1')

如果需要其他形状节点,直接修改shape参数即可,支持圆形circle、菱形diamond、平行四边形parallelogram等常用流程图节点形状。

多形状箭头配置

Graphviz内置了全量常用箭头形状,直接给边设置arrowhead属性即可切换箭头样式,无需额外自定义:

  • 常规实心箭头:arrowhead='normal'
  • 空心箭头:arrowhead='open'
  • 菱形箭头:arrowhead='diamond'
  • 无箭头直线:arrowhead='none'
  • 单侧半箭头:arrowhead='halfopen'
  • 倒三角箭头:arrowhead='inv'
    如果需要双向箭头,同时配置arrowtail属性并添加dir='both'参数即可,箭头颜色、线型、线宽都可以通过对应属性调整。

完整可运行示例

# 添加节点
dot.node('start', '起始节点')
dot.node('proc1', '业务处理节点1')
dot.node('proc2', '业务处理节点2')
dot.node('end', '结束节点')

# 添加不同样式的连接边
dot.edge('start', 'proc1', arrowhead='normal')  # 普通实心箭头
dot.edge('proc1', 'proc2', arrowhead='open', label='正常流转')  # 空心箭头带文字标注
dot.edge('proc2', 'proc1', arrowhead='halfopen', style='dashed', label='流程回退')  # 虚线半箭头
dot.edge('proc2', 'end', arrowhead='diamond')  # 菱形箭头

# 渲染导出图片,设置view=True会在生成后自动打开图片
dot.render('chart_output', view=True)

如果需要更特殊的自定义箭头形态,可通过组合内置箭头片段实现,常规业务结构图、架构图的箭头需求用内置样式完全可以覆盖。

参考节点样式示例

内容的提问来源于stack exchange,提问作者LLL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 02:54:26