GraphViz 文件中具有相同属性的节点组
Groups of nodes with the same attributes in GraphViz file
我想用 GraphViz
的 dot
语言描述一个二模网络。所以我有两种不同类型的节点。例如,一组可以包含人们如何阅读,另一组可以包含人们正在阅读的书籍。
我想给这两组中的节点以不同的外观(shape
、color
等)。如何在一条语句中为一组节点 指定属性。目的是能够在一个地方更改每组节点的外观,而不是在所有单个节点描述中。
这可以用属性继承之类的东西来完成,但我不知道dot
语言是否有这个概念。
这可以针对具有 node
关键字的图中的所有节点或具有 edge
关键字的图中的所有边来完成。这也可以在逐个节点或逐个边的基础上完成。
整个图或子图的示例:
digraph
{
subgraph readers
{
node[shape=box; color=red;]
r1; r2; r3;
}
subgraph books
{
node[shape=circle; color=blue;]
b1; b2; b3;
}
r1->{b1 b2}
r2->{b2 b3}
r3->{b1 b2 b3}
}
这会给你图表:
每个节点属性的示例:
digraph
{
n1[shape=triangle];
n2[shape=star];
n3[shape=square];
n1->n2->n3
}
会给出图表:
原则上有三种可能
- 在创建节点之前设置默认属性
- 全局 - 适用于所有后续节点创建
- 在子图中本地 - 仅对子图中的节点创建有效
- 创建具有显式属性的节点
- 创建后将属性分配给一组节点。
选项 1 和 2 只允许每个节点一个组,因为创建是一个事件。选项 3 允许对每个作业进行不同的分组。
在创建节点之前全局设置默认属性
digraph {
x // node with current defaults
// set default
node [shape=box color=red]
// create with default values
a1, a2
// set default
node [shape=circle color=blue]
// create with default values
b1, b2
y // node with current defaults
x->{a1 a2}
a1->{b1 b2}
a2->{b1 b2}
{b1,b2}->y
}
在创建节点之前在本地设置默认属性
digraph {
x // node with current defaults
{
// set default
node [shape=box color=red]
// create with default values
a1, a2
}
{
// set default
node [shape=circle color=blue]
// create with default values
b1, b2
}
y // node with current defaults
x->{a1 a2}
a1->{b1 b2}
a2->{b1 b2}
{b1,b2}->y
}
创建具有显式属性的节点
digraph {
x // node with current defaults
// create with explicit attributes
a1, a2 [shape=box color=red]
// create with explicit attributes
b1, b2 [shape=circle color=blue]
y // node with current defaults
x->{a1 a2}
a1->{b1 b2}
a2->{b1 b2}
{b1,b2}->y
}
创建后将属性分配给一组节点
digraph {
x // node with current defaults
// create with default values
a1, a2, b1, b2
// assign shape
a1, a2 [shape=box]
b1, b2 [shape=circle]
// assign color
a1, b2 [color=red]
b1, a2 [color=blue]
y // node with current defaults
x->{a1 a2}
a1->{b1 b2}
a2->{b1 b2}
{b1,b2}->y
}
我想用 GraphViz
的 dot
语言描述一个二模网络。所以我有两种不同类型的节点。例如,一组可以包含人们如何阅读,另一组可以包含人们正在阅读的书籍。
我想给这两组中的节点以不同的外观(shape
、color
等)。如何在一条语句中为一组节点 指定属性。目的是能够在一个地方更改每组节点的外观,而不是在所有单个节点描述中。
这可以用属性继承之类的东西来完成,但我不知道dot
语言是否有这个概念。
这可以针对具有 node
关键字的图中的所有节点或具有 edge
关键字的图中的所有边来完成。这也可以在逐个节点或逐个边的基础上完成。
整个图或子图的示例:
digraph
{
subgraph readers
{
node[shape=box; color=red;]
r1; r2; r3;
}
subgraph books
{
node[shape=circle; color=blue;]
b1; b2; b3;
}
r1->{b1 b2}
r2->{b2 b3}
r3->{b1 b2 b3}
}
这会给你图表:
每个节点属性的示例:
digraph
{
n1[shape=triangle];
n2[shape=star];
n3[shape=square];
n1->n2->n3
}
会给出图表:
原则上有三种可能
- 在创建节点之前设置默认属性
- 全局 - 适用于所有后续节点创建
- 在子图中本地 - 仅对子图中的节点创建有效
- 创建具有显式属性的节点
- 创建后将属性分配给一组节点。
选项 1 和 2 只允许每个节点一个组,因为创建是一个事件。选项 3 允许对每个作业进行不同的分组。
在创建节点之前全局设置默认属性
digraph {
x // node with current defaults
// set default
node [shape=box color=red]
// create with default values
a1, a2
// set default
node [shape=circle color=blue]
// create with default values
b1, b2
y // node with current defaults
x->{a1 a2}
a1->{b1 b2}
a2->{b1 b2}
{b1,b2}->y
}
在创建节点之前在本地设置默认属性
digraph {
x // node with current defaults
{
// set default
node [shape=box color=red]
// create with default values
a1, a2
}
{
// set default
node [shape=circle color=blue]
// create with default values
b1, b2
}
y // node with current defaults
x->{a1 a2}
a1->{b1 b2}
a2->{b1 b2}
{b1,b2}->y
}
创建具有显式属性的节点
digraph {
x // node with current defaults
// create with explicit attributes
a1, a2 [shape=box color=red]
// create with explicit attributes
b1, b2 [shape=circle color=blue]
y // node with current defaults
x->{a1 a2}
a1->{b1 b2}
a2->{b1 b2}
{b1,b2}->y
}
创建后将属性分配给一组节点
digraph {
x // node with current defaults
// create with default values
a1, a2, b1, b2
// assign shape
a1, a2 [shape=box]
b1, b2 [shape=circle]
// assign color
a1, b2 [color=red]
b1, a2 [color=blue]
y // node with current defaults
x->{a1 a2}
a1->{b1 b2}
a2->{b1 b2}
{b1,b2}->y
}