用graphviz生成图的最佳方法

问题描述 投票:1回答:1

这是我在这里的第一篇文章,我不确定它是否属于正确的子类别。

假设我们在某些数据结构中定义了以下工作流程:

enter image description here

使用以下信息绘制有向图的最佳方法是什么:

  • 有2种类型的节点(矩形最多1 in / 1 out,菱形最多2 in / 2 out
  • 给出了初始节点和最终节点
  • 节点(边缘)之间的链接是已知的

enter image description here

我使用此信息生成的代码给出了下图:

enter image description here

我在这里想念什么?

Edit1:添加源代码

digraph flow_view {
rankdir = TB;  
graph[fontsize="22"];
node [shape="box", fontsize="11.0", style="filled", fillcolor="peachpuff", fontcolor="black"];
 "Case created" [fillcolor="seagreen1"];
 "Case created" -> "Case assigned" ; 
 "Case assigned" -> "Case review and initial analysis" ; 
 "Case review and initial analysis" -> "Further action required?" ; 
 "Close case" [fillcolor="lightpink"];
 "Further action required?" -> "Close case"[label="No", fontsize="8.5"]
 "Further action required?" [shape="diamond", fillcolor="peachpuff"] ; 
 "Further action required?" -> "Further work"[label="Yes", fontsize="8.5"]
 "Further action required?" [shape="diamond", fillcolor="peachpuff"] ; 
 "Close case" [fillcolor="lightpink"];
 "Satisfactory explanations?" -> "Close case"[label="Yes", fontsize="8.5"]
 "Satisfactory explanations?" [shape="diamond", fillcolor="peachpuff"] ; 
 "Case escalated / reassigned" -> "Further action required?" ; 
 "Satisfactory explanations?" -> "Case escalated / reassigned"[label="No", fontsize="8.5"]
 "Satisfactory explanations?" [shape="diamond", fillcolor="peachpuff"] ; 
 "Further work" -> "Satisfactory explanations?" ; 
}
graphviz dot
1个回答
0
投票

我设法调整它以匹配您的示例图像,不确定它的可伸缩性。大概我做了以下事情:

  • 构建代码(仅出于可读性):
    • 基于形状,首先在两个组中定义节点
    • 边缘定义第二
    • 根据图形顺序的语法中的顺序连接
    • fontsize定义添加为全局边缘属性,而不是每个连接
  • [添加了一些格式调整(可选)
    • [添加了更现代的字体(Arial)
    • 在导出为png时使背景透明。
  • 用于某些节点(例如portPos)。这指示边缘应连接到节点的哪一侧(n正交,e ast,s outh,w est)。
  • 为某些连接添加了portPos。这表明订购节点时不应考虑该连接。
  • 为两组节点添加了"Further work":s
  • 添加constraint=false以缩短/拉直某些边缘
constraint=false

rank=same

© www.soinside.com 2019 - 2024. All rights reserved.