Graphviz 我可以同时将样式应用于多个子图中的多个点节点吗?
考虑这个DOT示例:Graphviz 我可以同时将样式应用于多个子图中的多个点节点吗?,graphviz,dot,Graphviz,Dot,考虑这个DOT示例: digraph Foo { subgraph clusterA { A -> B; } subgraph clusterB { X -> Y; } subgraph connection_type_1 { edge [color=red]; A -> Y; } subgraph connection_type
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不起作用
我有一种感觉,答案是你只能在第一次提到节点属性时设置它们,但是有没有办法说以下节点,无论它们在哪里,都应该具有以下属性?该行不起作用,因为它只设置默认属性,并且节点已经创建。默认属性无效。标签是覆盖任何默认值的具体属性,因此生效 因此,您应该将代码重新排序为 使用默认属性创建所有节点 使用默认属性再次创建所有边 将节点分配给集群 步骤2和3将创建defauls属性处于活动状态的节点。您的示例仅在偶然情况下对边起作用,因为您仅对不存在的边进行了尝试。对于簇中已定义的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;
}
}
而且,每个节点都应该只是一个子图的一部分。我敢肯定你会从这个图表中得到一些警告。