[英]Prevent overlapping records using graphviz and neato
我正在構建一個點文件來表示計算機硬件以及與網絡交換機和顯示器的物理連接。 當它被 dot 程序處理時,我看起來還不錯,但我想我真的希望它由neato 處理以創建一個更“自由形式”的圖片,因為它開始出現。 現在,當我使用neato 運行我的大文件時,一切都在重疊。
我想弄清楚在哪里定義overlap
屬性的語法。 下面是我的 dot 文件的一個子集。
graph g {
node [shape=record,height=.1];
PC8[label="{{<GigE1>GigE1|<GigE2>GigE2}|{<name>PC8}|{<dvi1>dvi1|<dvi2>dvi2|<dvi3>dvi3|<dvi4>dvi4}}"];
PC9[label="{{<GigE1>GigE1|<GigE2>GigE2}|{<name>PC9}|{<dvi1>dvi1|<dvi2>dvi2|<dvi3>dvi3|<dvi4>dvi4}}"];
C1[label = "{{<dvi1>dvi1}|{<name>C1}}"];
C2[label = "{{<dvi1>dvi1}|{<name>C2}}"];
C3[label = "{{<dvi1>dvi1}|{<name>C3}}"];
C4[label = "{{<dvi1>dvi1}|{<name>C4}}"];
D1[label = "{{<dvi1>dvi1}|{<name>D1}}"];
D2[label = "{{<dvi1>dvi1}|{<name>D2}}"];
"PC8":dvi1 -- "C1":dvi1;
"PC8":dvi2 -- "C2":dvi1;
"PC8":dvi3 -- "C3":dvi1;
"PC8":dvi4 -- "C4":dvi1;
"PC9":dvi1 -- "D1":dvi1;
"PC9":dvi2 -- "D2":dvi1;
}
好吧,與大多數問題一樣......在我發布后不久我就找到了答案。 我需要添加
graph [overlap=false];
在文件的頂部。
像這樣做:
graph g {
overlap = false;
node [shape=record,height=.1];
/* ... */
}
正如社區維基回答所說,將重疊設置為 false 將適用於neato; 然而,如果圖形表現出任何規律性或對稱性, [overlap=false]
通常會通過搖晃節點使它們不重疊來弄亂它。
使用[overlap=false]
作為最后的手段。
從neato 輸出的所有節點重疊都可以被視為發生,因為節點相對於邊來說太大了。 您可以通過使節點變小來消除任何重疊,並通過設置[overlap=scale]
保持圖形繪制中的對稱性。 引用Neato 用戶手冊:
為了提高清晰度,消除重疊的節點或邊緣有時會有所幫助。 消除節點重疊的一種方法是根據需要擴大布局(根據節點的中心點)。 這是通過設置圖形屬性重疊=比例來啟用的。 這種轉換保留了布局中的整體幾何關系,但在糟糕的情況下可能需要高比例因子
正如文檔所說, [overlap=scale]
可能會導致圖形繪制大得無法接受,但如果不是,其輸出通常會比[overlap=false]
更好看。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.