从graphviz中的多个节点声明级联或继承属性

从graphviz中的多个节点声明级联或继承属性,graphviz,dot,Graphviz,Dot,我正在使用graphviz/dot生成一个图形 我想将图中的节点和/或边分组为语义类,每个类都有一组节点和/或边属性,这些属性级联或继承类似于CSS。但是,如果我将单个节点分组为多个类,则后面的属性声明将覆盖前面的属性声明,即使后面的声明中没有指定该属性。特别是,它将该值还原为默认值/范围更大的值 例如: node [shape="hexagon", style="filled", fillcolor="lightskyblue1"]; { node [shape="box"]; a; b; }

我正在使用graphviz/dot生成一个图形

我想将图中的节点和/或边分组为语义类,每个类都有一组节点和/或边属性,这些属性级联或继承类似于CSS。但是,如果我将单个节点分组为多个类,则后面的属性声明将覆盖前面的属性声明,即使后面的声明中没有指定该属性。特别是,它将该值还原为默认值/范围更大的值

例如:

node [shape="hexagon", style="filled", fillcolor="lightskyblue1"];
{ node [shape="box"]; a; b; }
{ node [fillcolor="red"]; b; c; }
我想要的是:

a [shape="box", style="filled", fillcolor="lightskyblue1"];
b [shape="box", style="filled", fillcolor="red"];
c [shape="hexagon", style="filled", fillcolor="red"];
我得到的是:

a [shape="box", style="filled", fillcolor="lightskyblue1"];
b [shape="hexagon", style="filled", fillcolor="red"];
c [shape="hexagon", style="filled", fillcolor="red"];
这可能吗?

这里的结果不同

a [shape="box", style="filled", fillcolor="lightskyblue1"];
b [shape="box", style="filled", fillcolor="lightskyblue1"];
c [shape="hexagon", style="filled", fillcolor="red"];
这对我来说是正确的。对象继承定义上的默认属性(=第一次出现)。b在带有
[shape=“box”]
的行上定义。有
fillcolor=“lightskyblue1”
从外部范围生效

来自(由我强调):

如果使用节点、边或图形语句定义默认属性,或通过未附加到节点或边的属性指定定义默认属性,则随后定义的适当类型的任何对象都将继承此属性值

graphviz版本2.38.0