Сделать узел не влияющим на макет графика - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь сделать узел, не влияя на расположение подключенных узлов.Когда я строю график, он центрирует родительский узел между дочерними узлами;это вызывает пораженный эффект.Как сделать так, чтобы узел отказа не влиял на расположение других узлов?Я уже сделал линии прямыми, как они есть на желаемой фотографии, но он все еще имеет разнесенный макет.

Текущий стиль:

Current style

Желаемый стиль:

Desired Style

РЕДАКТИРОВАТЬ: код точки

strict graph "" {
graph [bb="0,0,562,490",
    bgcolor="#666666",
    fontcolor=white,
    fontname=monospace,
    label="ACI MSC - Create Bridge Domain - L3",
    labelfontsize=40,
    labelloc=t,
    lheight=0.19,
    lp="281,479",
    lwidth=3.30,
    newrank=yes,
    nodesep=0.2,
    outputorder=edgesfirst,
    overlap=compress,
    ranksep=0.5,
    splines=spline
];
node [fillcolor=white,
    fixedsize=True,
    fontcolor=black,
    fontname=monospace,
    label="\N",
    shape=rectangle,
    style=filled,
    width=5.125
];
edge [fontname=monospace,
    fontsize=15,
    penwidth=2
];
Start    [color=white,
    fillcolor=blue,
    fixedsize=false,
    fontcolor=white,
    height=0.5,
    pos="377.5,450",
    shape=oval,
    width=1];
"ACIMSC-CreateSchemaandAddTemplate-Sub"  [height=0.5,
    pos="377.5,378"];
Start -- "ACIMSC-CreateSchemaandAddTemplate-Sub"     [color=green,
    pos="377.5,431.83 377.5,421 377.5,407.29 377.5,396.41"];
"ACIMSC-AddBridgeDomaintoTemplate"   [height=0.5,
    pos="274.5,306"];
"ACIMSC-CreateSchemaandAddTemplate-Sub" -- "ACIMSC- 
AddBridgeDomaintoTemplate"   [color=green,
    pos="351.51,359.83 335.89,348.92 316.1,335.08 300.48,324.16"];
Fail     [color=white,
    fillcolor=red,
    fixedsize=false,
    fontcolor=white,
    height=0.5,
    pos="421.5,18",
    shape=oval,
    weight=0,
    width=1];
"ACIMSC-CreateSchemaandAddTemplate-Sub" -- Fail  [color=red,
    pos="423.22,359.95 439.3,351.39 455.96,339.56 466.5,324 
    489.24,290.42 481.5,274.55 481.5,234 481.5,234 481.5,234 
    481.5,162 
    481.5,120.71 \
    475.54,109.6 458.5,72 452.5,58.75 443.25,45.25 435.5,35.063"];
"ACIMSC-AddBridgeDomaintoTemplate" -- Fail   [color=red,
    pos="356.37,288 391.19,278.55 426.17,266.02 436.5,252 
    485.39,185.63 447.55,77.845 429.6,35.692"];
VscaleACIMultisiteAddSubnettoBridgeDomain    [height=0.5,
    pos="244.5,234"];
"ACIMSC-AddBridgeDomaintoTemplate" -- 
VscaleACIMultisiteAddSubnettoBridgeDomain    [color=green,
    pos="266.93,287.83 262.42,277 256.7,263.29 252.17,252.41"];
VscaleACIMultisiteAddSubnettoBridgeDomain -- Fail    [color=red,
    pos="325.05,215.91 360.06,206.35 395.58,193.76 406.5,180 
    439.94,137.85 431.92,68.723 425.62,36.11"];
"ACIMSC-AddL3OuttoSiteBridgeDomain-Sub"  [height=0.5,
    pos="214.5,162"];
VscaleACIMultisiteAddSubnettoBridgeDomain -- "ACIMSC- 
AddL3OuttoSiteBridgeDomain-Sub"  [color=green,
    pos="236.93,215.83 232.42,205 226.7,191.29 222.17,180.41"];
"ACIMSC-AddL3OuttoSiteBridgeDomain-Sub" -- Fail  [color=red,
    pos="309.72,143.87 333.49,135.88 357.57,124.41 376.5,108 
    398.54,88.885 410.97,56.41 416.96,36.139"];
"ACIMSC-DeployTemplatetoSites"   [height=0.5,
    pos="184.5,90"];
"ACIMSC-AddL3OuttoSiteBridgeDomain-Sub" -- "ACIMSC- 
DeployTemplatetoSites"   [color=green,
    pos="206.93,143.83 202.42,133 196.7,119.29 192.17,108.41"];
"ACIMSC-DeployTemplatetoSites" -- Fail   [color=red,
    pos="244,71.924 290.62,57.761 353.6,38.629 390.65,27.373"];
Complete     [color=white,
    fillcolor="#129112",
    fixedsize=false,
    fontcolor=white,
    height=0.5,
    pos="184.5,18",
    shape=oval,
    width=1.3321];
"ACIMSC-DeployTemplatetoSites" -- Complete   [color=green,
    pos="184.5,71.831 184.5,61 184.5,47.288 184.5,36.413"];
}

1 Ответ

0 голосов
/ 19 апреля 2019

Я не смог отобразить ваш код для получения изображения, но методы, которые я собираюсь предложить, должны работать в любом случае.

Я написал аналогичный базовый пример кода:

digraph {
    node [shape=rect]

    a -> b -> c -> d -> e -> f
    success [shape=oval]
    f -> success
    {
        rank=max
        failure [shape=oval]
    }
    {a b c d e f} -> failure
}

Это дает следующую картину с воспроизведением вашей проблемы:

Первое возможное решение может заключаться в добавлении атрибута ограничение =false к ребрам, ведущим к узлу falure. Этот атрибут делает именно это - предотвращает влияние края на макет.

digraph {
    node [shape=rect]

    a -> b -> c -> d -> e -> f
    success [shape=oval]
    f -> success
    {
        rank=max
        failure [shape=oval]
    }
    {a b c d e f} -> failure [constraint=false]
}

Результат:

Вторым возможным решением было бы увеличение атрибута weight ребер, которые вам нужны, чтобы оставаться прямыми. Края с большим весом, как правило, короче и прямее других:

digraph {
    node [shape=rect]

    a -> b -> c -> d -> e -> f [weight=10]
    success [shape=oval]
    f -> success
    {
        rank=max
        failure [shape=oval]
    }
    {a b c d e f} -> failure
}

Результат:

...