如何使用Graphviz绘制带直连顶层路径和分组子路径的决策流程图
决策栈流程图Graphviz优化说明
我有一个通用数据流结构,本质由顶层决策栈构成。每个决策会引导你在栈内上下跳转,直到栈中触发终止事件,或是抵达栈的顶端或底端。部分决策需要检查布尔条件以确定后续执行的决策。我希望能优化输出图以更清晰地展示思考流程,目前问题似乎主要出在分组/层级(rank)设置上,也可能存在其他问题。
我第一版的Graphviz代码如下,使用dot渲染后得到下图:
虽然这张图准确呈现了我要搭建的决策栈,但我希望最终效果更接近下图:
对应的参考Graphviz代码如下:
graph decision_path { node [shape="rectangle"] edge [dir="both"] newrank=true Top d1 [label="Decision 1"] cd1 [label="Composite Decision 1"] cd2 [label="Composite Decision 2"] d2 [label="Decision 2"] d3 [label="Decision 3"] d4 [label="Decision 4"] source [label="Decision Source" style="filled" color="#EEFFEE"] Top -- d1 [dir="back"] d1 -- cd1 cd1 -- cd2 cd2 -- d2 d2 -- d3 d3 -- d4 d4 -- Bottom [dir="forward"] cd1 -- source [dir="back"] subgraph { node [style=filled, color="#EEEEFF"] cd1_d1 [label="Kill"] cd1_d2 [label="Continue"] cd1_d1 -- cd1_d2 [dir="forward"] subgraph { rank=same node [style=filled color="#FFEEEE"] cd1_d1_c1 [label="Conditional 1"] cd1_d1 -- cd1_d1_c1 [dir="forward"] } } cd1 -- cd1_d1 [dir="forward"] subgraph { node [style=filled, color="#EEEEFF"] cd2_d1 [label="Continue"] cd2_d2 [label="Kill"] cd2_d1 -- cd2_d2 [dir="forward"] subgraph { rank=same node [style=filled color="#FFEEEE"] cd2_d1_c1 [label="Conditional 1"] cd2_d1_c2 [label="Conditional 2"] cd2_d1 -- cd2_d1_c1 [dir="forward"] cd2_d1_c1 -- cd2_d1_c2 [dir="forward"] } } cd2 -- cd2_d1 [dir="forward"] }
内容的提问来源于stack exchange,提问作者Vince W.
相关产品推荐
相关产品推荐

