2017-08-28 79 views
0

節點的風格我有一個圖形看起來像:的Graphviz:指定使用內聯記號

digraph R { 
    rankdir=LR 
    "foo" -> "bar"; 
} 

現在我想的是FOO的節點風格是一個正方形和酒吧是一個圓。此外,在後續使用中,這應該是這樣的,例如:

digraph R { 
    rankdir=LR 
    "foo" -> "bar" [label="qux1"]; 
    "baz" -> "foo" [label="qux2"]; 
} 

然後應該是一個正方形。有沒有一種方法可以使用這種內聯文檔來指定它?

注意!我知道我可以寫:

digraph G { 
    { 
    node1 [shape=box, label="foo"] 
    node2 [shape=circle, label="bar"] 
    node1 -> node2 [label="qux"] 
    } 
} 

但這不是我想要的。我想使用這種特定的內聯符號。

回答

0

如上所述,點語法語法不支持這一點。解決方法可以通過使用子圖完成:

digraph G { 
    subgraph { nodefoo [label="foo", shape=box]; } -> 
    subgraph { nodebar [label="bar", shape=circle]; } 
    [label="qux"]; 
} 
2

你所要求的是不可能的 - 不幸的是,沒有其他答案。

如果你看一看的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