Как правильно позиционировать xlabel и избегать скрещивания краев?

Я использую graphviz в расширении уценки кода Visual Studio, который использует viz.js для визуализации graphviz. Ниже приведен код.

```dot {engine="neato"}
graph G {

overlap=compress;
sep=4;

edge [ fontsize=9 color="#92CCBF" fontcolor="#7c7c7c" ];

node [shape=box width=0.1 height=0.1 style=filled fontname="Arial" fontsize=10 fixedsize=true color="#179E9C" ];

A [xlabel=Arad, label="" pos="-3.25,0.15!"];
S [xlabel=Sibiu label=""  pos="-1.75,-0.05!"];
Z [xlabel=Zerind label="" pos="-2.95,0.75!"];
T [xlabel=Timisoara label="" pos="-3.30,-0.8!"];

O [xlabel=Oradea label="" pos="-2.45,1.35!"];
LU [xlabel=Lugoj label="" pos="-2.25,-1.25!"];
M [xlabel=Mehadia label="" pos="-2.15,-2!"];
D [xlabel=Drobeta label="" pos="-2.3,-2.75!"];
C [xlabel=Craiova label="" pos="-1,-2.75!"];

RV [xlabel="Rimnicu Vilcea" label="" pos="-1.25,-0.8!"];
P [xlabel=Pitesti label="" pos="0.0,-1.45!"];
F [xlabel=Fagaras label=""  pos="-0.25,-0.15!"];
B [xlabel=Bucharest label="" pos="1.5,-2.1!"];

G [xlabel=Giurgiu label="" pos="1.3,-2.85!"];
U [xlabel=Urziceni label="" pos="3,-1.85!"];
H [xlabel=Hirsova label="" pos="4,-2!"];
E [xlabel=Eforie label="" pos="3.8,-3!"];

V [xlabel=Vaslui label="" pos="3.5,-0.05!"];
LA [xlabel=lasi label="" pos="2.75,0.75!"];
N [xlabel=Neamt label="" pos="2,1.25!"];

A -- {Z S T};

Z -- O [label="71"];
O -- S [label="151"];
S -- F [label="99"];

T -- LU [label="111"];
LU -- M [label="70"]; 
M -- D [label="75"]; 
D -- C [label="120"];

S -- RV [label="80"];
RV  -- C [label="146"];
RV  -- P [label="97"];
C -- P [label="138"];

F -- B [label="211"];
P -- B [label="101"];
G -- B [label="90"];
B -- U [label="85"];

U -- H [label="98"];
H -- E [label="86"];

U -- V [label="142"];
V -- LA [label="92"];
LA -- N [label="87"];
}
```

Он производит вывод следующим образом. выход

Идеально ожидаемый результат:ожидание

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

  1. Есть ли способ, которым я мог бы избежать абс.позиции и все же получить результат, как и ожидалось?
  2. В выводе мои метки узлов и метки ребер находятся ниже ребер и пересекаются с ними. Можем ли мы этого избежать, и размещать xlabels и ярлыки без автоматического пересечения? Даже если только вручную возможно, как?

Из-за расширения у меня нет командной строки для использования neato flag n2, поэтому мне нужен путь внутри самого графика. Пожалуйста, помогите.

0 ответов

Другие вопросы по тегам