Graphviz——样条曲线=";“弯曲的”;不';行不通
我试图使用Graphviz——样条曲线=";“弯曲的”;不';行不通,graphviz,dot,Graphviz,Dot,我试图使用.dot源文件在.pdf中编译有限状态机(FSM)可视化表示: // Use directional graph "digraph" opossed to "graph" digraph { rankdir = TB; nodesep = 0.5; ranksep = 0.25; //splines = "curved"; //splines = "ortho";
.dot
源文件在.pdf
中编译有限状态机(FSM)可视化表示:
// Use directional graph "digraph" opossed to "graph"
digraph {
rankdir = TB;
nodesep = 0.5;
ranksep = 0.25;
//splines = "curved";
//splines = "ortho";
// A:
node[
fontname = "IBM Plex Mono Text Italic",
fontsize = 8,
shape = circle,
style = "filled",
fillcolor = "#DDDDDD",
fontcolor = "#333333",
color = "#AAAAAA",
penwidth = 0.1;
]
// B:
edge[
fontname = "IBM Plex Mono Bold",
//style = "dotted",
fontsize = 8,
arrowhead = normal,
arrowsize = 0.4,
penwidth = 0.1;
fontcolor = "#444444",
color = "#777777",
]
// C:
graph[
fontname = "IBM Plex Mono Bold",
fontsize=8,
rank = TB,
style = "filled",
fontcolor = "#444444",
color = "#EEEEEE",
]
// C:
000[label = "start", shape = "plain", fillcolor = "none"];
001[label = "q1", shape = "doublecircle"];
002[label = "q2"];
003[label = "q3"];
// D:
000->001;
001->001[label="2"];
001->002[label="1"];
002->001[label="0"];
002->002[label="2"];
002->003[label="1"];
003->002[label="0"];
003->003[label="2"];
001->003[label="1"];
003->001[label="0"];
}
这几乎可以完美地编译(除了笔直的内部转换):
如果我取消注释行spline=“ortho”代码>在顶部,它是这样编译的(虽然很难看,但我想证明它是有效的):
但是当我取消注释行spline=“curve”代码>(这是我需要的)在顶部,灾难发生了:
为什么会发生这种情况?您使用的是什么版本的graphviz?从命令行运行,my dot.exe是最新的2.47.1版本,当我取消注释行spline=“curve”时,它会显示“警告:带样条曲线的边标签在dot中不受支持-使用xlabels”代码>然后生成一些不适当的东西-但是消息说明了这一点。我在Debian系统上,我的graphviz是2.40.1
。你是对的。使用dot-Tpdf main.dot>main.pdf编译会产生以下警告:警告:点中不支持带样条曲线的边标签-使用xlabels
。你可能知道如何使用xlabels
?不知道。我相信它允许您手动放置标签。FWIW我会使用默认输出-如果您迫切需要弯曲直线,请在边缘添加一些不可见的节点,使其弯曲。我将等待具有graphviz版本2.42.2的Debian 11,并希望曲线样条线在那里得到支持。我希望我知道如何验证这一点。我尝试在graphviz的官方GitLab上搜索提交,但我只能在6年前找到关于曲线样条线的补丁:2.47.1也有同样的信息,您非常乐观。