使用graphviz创建图形的最佳方法
这是我在这里的第一篇文章,我不确定它是否属于正确的子 假设我们在某些数据结构中定义了以下工作流: 使用以下信息绘制此有向图的最佳方式是什么:使用graphviz创建图形的最佳方法,graphviz,dot,Graphviz,Dot,这是我在这里的第一篇文章,我不确定它是否属于正确的子 假设我们在某些数据结构中定义了以下工作流: 使用以下信息绘制此有向图的最佳方式是什么: 有两种类型的节点(矩形最多1 in/1 out,菱形最多2 in/2 out) 给出了初始节点和最终节点 节点(边)之间的链接是已知的 我使用此信息生成的代码给出了以下图表: 我错过了什么 Edit1:添加源代码 digraph flow_view { rankdir = TB; graph[fontsize="22"]; node [sha
- 有两种类型的节点(矩形最多1 in/1 out,菱形最多2 in/2 out)
- 给出了初始节点和最终节点
- 节点(边)之间的链接是已知的
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?" ;
}
我设法调整它以匹配您的示例图像,但不确定它的可伸缩性如何。 我大致做了以下几点:
- 结构化代码(仅为了可读性):
- 基于形状的两组中的第一个节点定义
- 边定义秒
- 按照图形顺序的语法中的有序连接
- 添加了
定义作为全局边缘属性,而不是每个连接fontsize
- 添加了一些格式调整(可选)
- 添加了一种更现代的字体(Arial)
- 在导出为png时使背景透明
- 用于某些节点(例如,
)。这表示边缘应连接到节点的哪一侧(north,east,south,west)“进一步工作”:s
- 添加到某些连接。这表示在订购节点时不应考虑该连接
- 为两组节点添加了
- 添加以缩短/拉直某些边
我设法调整它以匹配您的示例图像,但不确定它的可伸缩性。 我大致做了以下几点:
- 结构化代码(仅为了可读性):
- 基于形状的两组中的第一个节点定义
- 边定义秒
- 按照图形顺序的语法中的有序连接
- 添加了
定义作为全局边缘属性,而不是每个连接fontsize
- 添加了一些格式调整(可选)
- 添加了一种更现代的字体(Arial)
- 在导出为png时使背景透明
- 用于某些节点(例如,
)。这表示边缘应连接到节点的哪一侧(north,east,south,west)“进一步工作”:s
- 添加到某些连接。这表示在订购节点时不应考虑该连接
- 为两组节点添加了
- 添加以缩短/拉直某些边
对于您来说,预期图形和实际图形之间的差异到底是什么?颜色?图形样式?角度?位置?字体和换行符?还显示您迄今为止尝试的点源代码。主要是位置:我尝试创建一个集群,并使用rank=same,添加不可见的节点,但很快其他节点就无法缩放元数据(即,如果我们添加一些节点,我们就不能重用完全相同的代码生成算法)这是我得到的最好的代码,但它远不是最优的,它是反复试验,没有任何逻辑支持。为什么图形必须完全相同?我没有很好的经验告诉graphviz如何准确地呈现任何图形。对于一般数据,任何特定的黑客帮助一个实例都会伤害另一个实例。布局由graphviz设计的ut在我看来也更符合逻辑,因为如果没有必要,没有边缘向上流动。你可以使用
样条线=正交
来美化它。或者尝试不同的工具,我有很好的经验。它只是在布局上看起来更简单..样条线=正交在这方面没有多大帮助预期和ac之间有什么区别实际图形正是您的问题?颜色?图形样式?角度?位置?字体和换行符?还显示了您迄今为止尝试的点源代码。主要是位置:我尝试创建一个集群并使用rank=same,添加了不可见的节点,但对于其他元数据,它很快变得不可缩放(也就是说,如果我们添加一些节点,我们就不能重用完全相同的代码生成算法)这是我得到的最好的代码,但它远不是最优的,它是反复试验,没有任何逻辑支持。为什么图形必须完全相同?我没有很好的经验告诉graphviz如何准确地呈现任何图形。对于一般数据,任何特定的黑客帮助一个实例都会伤害另一个实例。布局由graphviz设计的ut在我看来也更符合逻辑,因为如果不需要的话,没有边缘向上流动。你可以使用spline=ortho
来美化它。或者尝试不同的工具,我有很好的使用经验。这种布局看起来更简单。spline=ortho在这里没有多大帮助
digraph flow_view {
rankdir = TB;
splines=splines
graph[fontsize="22", bgcolor="transparent", fontname="Arial"];
//Node definition
node [shape="box", fontsize="11.0", style="filled", fillcolor="peachpuff", fontcolor="black", fontname="Arial"];
"Case created" [ fillcolor="seagreen1"];
"Close case" [ fillcolor="lightpink"];
"Case assigned"
"Case review and initial analysis"
"Further work"
"Case escalated / reassigned"
node [shape="diamond"];
"Further action required?"
"Satisfactory explanations?"
// Chart definition
edge [fontsize="8.5", fontname="Arial"]
"Case created" -> "Case assigned" ;
"Case assigned" -> "Case review and initial analysis" ;
"Case review and initial analysis" -> "Further action required?" ;
"Further action required?":w -> "Close case":e[label="No", weight=100000, constraint=false]
"Further action required?":s -> "Further work":n[label="Yes", weight=10]
"Further work":s -> "Satisfactory explanations?":n [weight=10] ;
"Satisfactory explanations?":w -> "Close case":s[label="Yes"]
"Satisfactory explanations?" -> "Case escalated / reassigned"[label="No"]
"Case escalated / reassigned":n -> "Further action required?":e
// Tweaks
{rank=same "Further action required?";"Close case"}
{rank=same "Satisfactory explanations?";"Case escalated / reassigned"}
}