Graphviz:使用内联符号指定节点样式
Graphviz: specify style of nodes using inline notation
我的图表如下所示:
digraph R {
rankdir=LR
"foo" -> "bar";
}
现在我想要foo的节点样式是正方形,bar是圆形。还有,在后续的使用中,应该是这样的,例如:
digraph R {
rankdir=LR
"foo" -> "bar" [label="qux1"];
"baz" -> "foo" [label="qux2"];
}
那么foo应该是一个正方形。有没有办法使用这个内联文档来指定它?
注意!我知道我可以写:
digraph G {
{
node1 [shape=box, label="foo"]
node2 [shape=circle, label="bar"]
node1 -> node2 [label="qux"]
}
}
但这不是我想要的。我想使用这个特定的内联符号。
您所要求的是不可能的 - 不幸的是,没有其他答案。
如果你看一下 grammar of the dot language:
graph : [ strict ] (graph | digraph) [ ID ] '{' stmt_list '}'
stmt_list : [ stmt [ ';' ] stmt_list ]
stmt : node_stmt
| edge_stmt
| attr_stmt
| ID '=' ID
| subgraph
attr_stmt : (graph | node | edge) attr_list
attr_list : '[' [ a_list ] ']' [ attr_list ]
a_list : ID '=' ID [ (';' | ',') ] [ a_list ]
edge_stmt : (node_id | subgraph) edgeRHS [ attr_list ]
edgeRHS : edgeop (node_id | subgraph) [ edgeRHS ]
node_stmt : node_id [ attr_list ]
node_id : ID [ port ]
port : ':' ID [ ':' compass_pt ]
| ':' compass_pt
subgraph : [ subgraph [ ID ] ] '{' stmt_list '}'
compass_pt : (n | ne | e | se | s | sw | w | nw | c | _)
edge_stmt的组合不包含节点属性。唯一允许节点属性的语句是 node_stmt.
如上所述,点语言语法不支持此功能。解决方法可以通过使用子图来完成:
digraph G {
subgraph { nodefoo [label="foo", shape=box]; } ->
subgraph { nodebar [label="bar", shape=circle]; }
[label="qux"];
}
我的图表如下所示:
digraph R {
rankdir=LR
"foo" -> "bar";
}
现在我想要foo的节点样式是正方形,bar是圆形。还有,在后续的使用中,应该是这样的,例如:
digraph R {
rankdir=LR
"foo" -> "bar" [label="qux1"];
"baz" -> "foo" [label="qux2"];
}
那么foo应该是一个正方形。有没有办法使用这个内联文档来指定它?
注意!我知道我可以写:
digraph G {
{
node1 [shape=box, label="foo"]
node2 [shape=circle, label="bar"]
node1 -> node2 [label="qux"]
}
}
但这不是我想要的。我想使用这个特定的内联符号。
您所要求的是不可能的 - 不幸的是,没有其他答案。
如果你看一下 grammar of the dot language:
graph : [ strict ] (graph | digraph) [ ID ] '{' stmt_list '}'
stmt_list : [ stmt [ ';' ] stmt_list ]
stmt : node_stmt
| edge_stmt
| attr_stmt
| ID '=' ID
| subgraph
attr_stmt : (graph | node | edge) attr_list
attr_list : '[' [ a_list ] ']' [ attr_list ]
a_list : ID '=' ID [ (';' | ',') ] [ a_list ]
edge_stmt : (node_id | subgraph) edgeRHS [ attr_list ]
edgeRHS : edgeop (node_id | subgraph) [ edgeRHS ]
node_stmt : node_id [ attr_list ]
node_id : ID [ port ]
port : ':' ID [ ':' compass_pt ]
| ':' compass_pt
subgraph : [ subgraph [ ID ] ] '{' stmt_list '}'
compass_pt : (n | ne | e | se | s | sw | w | nw | c | _)
edge_stmt的组合不包含节点属性。唯一允许节点属性的语句是 node_stmt.
如上所述,点语言语法不支持此功能。解决方法可以通过使用子图来完成:
digraph G {
subgraph { nodefoo [label="foo", shape=box]; } ->
subgraph { nodebar [label="bar", shape=circle]; }
[label="qux"];
}