簡體   English   中英

點濃度為true的點語言會使圖形混淆

[英]Dot language with concentrate=true confusing the graph

我繪制了一個簡單的圖形,如下所示,發現了彩色顯示的不同行為。

digraph G {
     concentrate=true
    edge [dir=none]
     a  -> b [color=red]
     b -> c   
     c -> b 
     b -> a 
    }

圖形的正確圖像

圖形顯示a和b之間的邊緣為紅色>>這是正確的。

但是當我只是將其更改為

     digraph G {
     concentrate=true
    edge [dir=none]
     a  -> b 
     b -> c   
     c -> b 
     b -> a [color=red]
    }

紅色不顯示

這次,邊緣a和b的顏色是黑色,而不是我想要的紅色。 有人可以找出我在這里做錯了什么嗎?

分析

由於問題中的代碼在兩個邊緣之間繪制一個邊緣,因此繪制的最后一個邊緣的顏色為贏。 點的布局引擎可以從下到上或從右到左工作。 這意味着繪制的最后一條邊是列出的第一個邊。

通用解決方案

點繪制有向圖。 可以使用dir=none模擬無向圖,但是只有一條邊:

digraph G {
  concentrate=true
  edge [dir=none]
  a -> b [color=red]
  b -> c
 }

圖顯示dir = none屬性的起訴

另類

請記住, dir=none並不是主要用作顯示屬性。 如果目標是兩個有向邊,則dir=both是更好的選擇:

digraph G {
  concentrate=true
  edge [dir=both]
  a -> b [color="red:black"]
  b -> c [color="black:black]
}

有向圖,顯示dir = both屬性的使用

筆記

從概念上將圖形建模與顯示屬性分開是很有用的。 Dot並不是特別容易,因為它鼓勵內聯樣式信息。 但是,分離問題的代價可能會在調試時間內得到回報。

您可以使用端口來防止邊緣重疊:

digraph G {
  concentrate=true
  edge [dir=none]
  a  -> b 
  b -> c   
  c -> b 
  b:nw -> a:se [color=red]
}

結果

另請參閱: https : //graphviz.gitlab.io/_pages/doc/info/lang.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM