目标是渲染组织结构图,其中某些人具有额外的彩色标签"附在他们身上,代表他们在场景中的角色。这些标签应该直接在个人的左边。
通过使个人及其标签成为子图的一部分,然后告诉它标签和人物节点都是{rank=same;...}
,我能够强制标签出现在我想要的地方。
但是,标签和节点之间存在很大的距离,它们是注释的。我没有尝试任何东西似乎解决它。
如何制作"标签"节点是否与它们应该标记的节点一样接近它们?
digraph scenario {
outputorder=edgesfirst
rankdir=TB
graph [ splines=true ]
subgraph cluster_spec {
ranksep="0.25 equally"
style="filled";
bgcolor="#f7f7f7";
node [
style="filled",
fillcolor="#f7f7f7",
fontname="sans-serif",
fontsize="10",
shape=circle,
width="0.75in",
fixedsize="shape",
color="black"
]
manager [ label="manager", fillcolor="#00a000", fontcolor="#ffffff" ];
accessor [ label="accessor", fillcolor="#a00000", fontcolor="#ffffff" ];
submitter [ label="submitter", fillcolor="#ffff00", fontcolor="#000000" ];
owner [ label="owner", fillcolor="#0000a0", fontcolor="#ffffff" ];
backup [ label="backup", fillcolor="#a000a0", fontcolor="#ffffff" ];
{rank=same; "submitter" -> "accessor" [ color="#808080", dir="both" ]}
"manager" -> "submitter" [ color="black" ]
"owner" -> "submitter" [ color="black" ]
{rank=same; "submitter" -> "backup" [ color="#808080", dir="both" ]}
"manager" -> "accessor" [ color="black" ]
"owner" -> "accessor" [ color="black" ]
{rank=same; "accessor" -> "backup" [ label="same", color="red:green", dir="both" ]}
{rank=same; "manager" -> "owner" [ label="same", color="red:green", dir="both" ]}
"manager" -> "backup" [ color="black" ]
"owner" -> "backup" [ color="black" ]
}
subgraph cluster_final {
color=white;
ranksep="0.25 equally"
nodesep="0.125"
node [
fontname="sans-serif"
shape=circle,
style="filled",
fillcolor="#e7e7e7",
width="1.5in",
fixedsize=shape,
]
edge [
color="#000080",
headclip=true,
tailclip=true
]
subgraph "cluster_emma-7246-roles" {
{ rank=same;
"emma-7246-submitter" [ shape="cds", label="submitter", style="filled", fillcolor="#ffff00", height="0.75in", width="1.5in", fontcolor="#000000", fontsize="24"]
"emma-7246" [ label="emma-7246" ]
"emma-7246-submitter" -> "emma-7246" [ color="#f0f0f0", len="0.125" ];
}
}
subgraph "cluster_edmund-0712-roles" {
{ rank=same;
"edmund-0712-accessor" [ shape="cds", label="accessor", style="filled", fillcolor="#a00000", height="0.75in", width="1.5in", fontcolor="#ffffff", fontsize="24"]
"edmund-0712-backup" [ shape="cds", label="backup", style="filled", fillcolor="#a000a0", height="0.75in", width="1.5in", fontcolor="#ffffff", fontsize="24"]
"edmund-0712" [ label="edmund-0712" ]
"edmund-0712-accessor" -> "edmund-0712" [ color="#f0f0f0", len="0.125" ];
"edmund-0712-backup" -> "edmund-0712" [ color="#f0f0f0", len="0.125" ];
}
}
subgraph "cluster_emma-8949-roles" {
{ rank=same;
"emma-8949-manager" [ shape="cds", label="manager", style="filled", fillcolor="#00a000", height="0.75in", width="1.5in", fontcolor="#ffffff", fontsize="24"]
"emma-8949-owner" [ shape="cds", label="owner", style="filled", fillcolor="#0000a0", height="0.75in", width="1.5in", fontcolor="#ffffff", fontsize="24"]
"emma-8949" [ label="emma-8949" ]
"emma-8949-manager" -> "emma-8949" [ color="#f0f0f0", len="0.125" ];
"emma-8949-owner" -> "emma-8949" [ color="#f0f0f0", len="0.125" ];
}
}
"edmund-9898" -> "emma-8949"
"emma-8949" -> "edmund-0712"
"emma-8949" -> "emma-7246"
}
}
注意:如果我取出第一个子图,那么第二个子图呈现我期望它的方式。关于第一个子图的存在的一些东西正在干扰第二个子图的布局和渲染。