考虑这个DOT样本:
digraph Foo
{
subgraph clusterA
{
A -> B;
}
subgraph clusterB
{
X -> Y;
}
subgraph connection_type_1
{
edge [color=red];
A -> Y;
}
subgraph connection_type_1
{
edge [color=green];
B -> X;
}
subgraph node_type_1
{
node [style=filled, color=".5,.5,.5"]; // THIS LINE DOESN'T WORK
X [label="foo"];
A;
}
}
结构在两个簇中列出,稍后在语义/美容等效组中添加边。边缘按预期着色。
但这不适用于样式节点。标记的行无效,除非我将其移动到cluster*
子图中的一个,但它适用于该子图中的所有节点。
奇怪的是label=foo
在最终子图中起作用,而style
则不起作用。
我有一种感觉,答案是“你只能在第一次提到它们时设置节点属性”,但是有没有办法说“以下节点,无论它们在哪里,都应该有以下节点属性“?
答案 0 :(得分:4)
该行不起作用,因为它仅设置默认属性并且已经创建了节点。默认属性无效。标签是覆盖任何默认值的具体属性,因此生效。
所以你应该把代码重新排序到
步骤2和3将创建具有默认属性然后激活的节点。你的例子只是偶然地为边缘工作,因为你只尝试了非现有边缘。它不会对集群中已经定义的2个边缘起作用。
digraph Foo {
subgraph node_type_1 {
node [style=filled, color=".5,.5,.5"];
A;
X [label="foo"];
}
subgraph node_type_2 {
node [style=none];
B;
Y;
}
subgraph connection_type_1 {
edge [color=red];
A -> Y;
A -> B;
}
subgraph connection_type_2 {
edge [color=green];
B -> X;
X -> Y;
}
subgraph clusterA {
A;
B;
}
subgraph clusterB {
X;
Y;
}
}