如何使用graphviz在节点中存储的值绘制树?
我需要绘制如下所示的树(带有与某些节点关联的值): 但我发现只有这样才能画出下一棵树: 我尝试使用子图和嵌套子图,但不需要效果。目前,我使用下一个gv脚本:如何使用graphviz在节点中存储的值绘制树?,graphviz,dot,Graphviz,Dot,我需要绘制如下所示的树(带有与某些节点关联的值): 但我发现只有这样才能画出下一棵树: 我尝试使用子图和嵌套子图,但不需要效果。目前,我使用下一个gv脚本: digraph "test-graph" { graph [rankdir=TB dpi=96] subgraph n0 { rank=same; "0_0" [ label = "a" ]; } subgraph n1 { rank=same;
digraph "test-graph" {
graph [rankdir=TB dpi=96]
subgraph n0 {
rank=same;
"0_0" [ label = "a" ];
}
subgraph n1 {
rank=same;
"1_0" [ label = "b" ];
"1_1" [ label = "d" ];
"1_2" [ label = "e" ];
subgraph {
"v3" [ label = "3", shape = "box" ];
"1_1"->"v3" [ dir = none, constraint = false ];
}
}
subgraph n2 {
rank=same;
"2_0" [ label = "g" ];
}
subgraph n3 {
rank=same;
"3_0" [ label = "a" ];
"3_1" [ label = "b" ];
"3_2" [ label = "c" ];
subgraph {
"v2" [ label = "2", shape = "box" ];
"3_0"->"v2" [ dir = none, constraint = false ];
"v0" [ label = "0", shape = "box" ];
"3_1"->"v0" [ dir = none, constraint = false ];
"v5" [ label = "5", shape = "box" ];
"3_2"->"v5" [ dir = none, constraint = false ];
}
}
subgraph n4 {
rank=same;
"4_0" [ label = "f" ];
subgraph {
"v1" [ label = "1", shape = "box" ];
"4_0"->"v1" [ dir = none, constraint = false ];
}
}
subgraph n5 {
rank=same;
"5_0" [ label = "c" ];
subgraph {
"v4" [ label = "4", shape = "box" ];
"5_0"->"v4" [ dir = none, constraint = false ];
}
}
"start"->"0_0";
"0_0"->"1_0";
"0_0"->"1_1";
"0_0"->"1_2";
"1_0"->"5_0";
"1_1"->"2_0";
"1_2"->"4_0";
"2_0"->"3_0";
"2_0"->"3_1";
"2_0"->"3_2";
}
使用“cluster_”前缀可以解决一些问题(感谢Anne),但在点脚本中有重要的按顺序排列的节点及其值
毕竟我遇到了一个新问题——节点在图上的顺序不正确:a、b、c节点(节点“g”子节点)的顺序错误:
另外,是否有一种方法可以从节点中分辨右侧的点位置值?当然,最好的方法是将值放在节点下,但是,我如何找到,这是一个无法解决的问题
点脚本是:
digraph "test-graph" {
graph [rankdir=TB dpi=96]
subgraph cluster_n0 {
rank=same;
style=invis;
"0_0" [ label = "a" ];
}
subgraph cluster_n1 {
rank=same;
style=invis;
"1_0" [ label = "b" ];
"1_1" [ label = "d" ];
"v3" [ label = "3", shape = "box", width=.01, height=.01 ];
"1_1"->"v3" [ dir = none, constraint = false ];
"1_2" [ label = "e" ];
}
subgraph cluster_n2 {
rank=same;
style=invis;
"2_0" [ label = "g" ];
}
subgraph cluster_n3 {
rank=same;
style=invis;
"3_0" [ label = "a" ];
"v2" [ label = "2", shape = "box", width=.01, height=.01 ];
"3_0"->"v2" [ dir = none, constraint = false ];
"3_1" [ label = "b" ];
"v0" [ label = "0", shape = "box", width=.01, height=.01 ];
"3_1"->"v0" [ dir = none, constraint = false ];
"3_2" [ label = "c" ];
"v5" [ label = "5", shape = "box", width=.01, height=.01 ];
"3_2"->"v5" [ dir = none, constraint = false ];
}
subgraph cluster_n4 {
rank=same;
style=invis;
"4_0" [ label = "f" ];
"v1" [ label = "1", shape = "box", width=.01, height=.01 ];
"4_0"->"v1" [ dir = none, constraint = false ];
}
subgraph cluster_n5 {
rank=same;
style=invis;
"5_0" [ label = "c" ];
"v4" [ label = "4", shape = "box", width=.01, height=.01 ];
"5_0"->"v4" [ dir = none, constraint = false ];
}
"start"->"0_0";
"0_0"->"1_0";
"0_0"->"1_1";
"0_0"->"1_2";
"1_0"->"5_0";
"1_1"->"2_0";
"1_2"->"4_0";
"2_0"->"3_0";
"2_0"->"3_1";
"2_0"->"3_2";
}
将不可见边从长方体添加到下一级节点,如以下示例所示
digraph "test-graph" {
graph [rankdir=TB,dpi=96,splines=false]
"1_1" [ label = "d" ];
"v3" [ label = "3", shape = "box", width = 0, height = 0];
"2_0" [ label = "g" ];
"1_1"->"v3" [ dir = none];
v3->"2_0"[style=invisible,dir = none];
"1_1"->"2_0";
}
要将“值”节点与节点分组,必须使用名称以cluster\uu
开头的子图。例如:
subgraph cluster_n4_0 {
rank=same;
"4_0" [ label = "f" ];
"v1" [ label = "1", shape = "box" ];
"4_0"->"v1" [ dir = none];
}
要使值具有较小的节点,可以使用width
和height
属性
我认为这里不需要几个级别的子图,对节点对使用集群应该很有用。集群工作正常,谢谢。现在我只需要删除集群节点周围的边框使用以下命令:子图[style=“invi”];