在节点旁边添加标签节点并使它们靠近

时间:2017-08-10 02:58:12

标签: graphviz dot

目标是渲染组织结构图,其中某些人具有额外的彩色标签"附在他们身上,代表他们在场景中的角色。这些标签应该直接在个人的左边。

通过使个人及其标签成为子图的一部分,然后告诉它标签和人物节点都是{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"
    }
}

注意:如果我取出第一个子图,那么第二个子图呈现我期望它的方式。关于第一个子图的存在的一些东西正在干扰第二个子图的布局和渲染。

0 个答案:

没有答案