簡體   English   中英

在 Graphviz 的嵌套子圖中放置節點

[英]Placement of nodes in a nested subgraph in Graphviz

我正在嘗試創建二進制的 plot,在不同的 colors 中為不同的節點着色和標記。

為了獲得子樹周圍的邊界,我使用了幾乎可以正常工作的子圖:

graph G
{
graph [ranksep="0.25", nodesep="0.25"]
rankdir = TB;
node [shape=ellipse, style=filled, fillcolor="#0068B4", color=white, fontcolor=white, penwidth=10]
edge [arrowtail="none"]

subgraph cluster_0 {
  node [fillcolor="#99CC00"]
  color="#99CC00"
  style=filled
  fillcolor=white
  fontcolor="#99CC00"
  label="12 is the root of\n26's left child\r"
  18;
    subgraph cluster_01 {
      node [fillcolor="#00B0F0"]
      color="#00B0F0"
      fontcolor="#00B0F0"
      style=filled
      fillcolor=white
      label="4 is the root of                         \n12's left child                         \r"
      7   [fillcolor=white]
      4 -- 13
      4 --  7 [style=invisible]
      7 -- 13 [style=invisible] 
      { rank=same; 7, 13 }
      { rank=same; 4, 18 }
      
    }


  12 -- {4,18}
  
  { rank=same; 12 }
}

subgraph cluster_1 {
  node [fillcolor="#C00000"]
  color="#C00000"
  style=filled
  fillcolor=white
  fontcolor="#C00000"
  label="32 is the root of\n26's right child\r"
  
  35   [fillcolor=white]

  32 -- 38
  32 -- 35 [style=invisible]
  35 -- 38 [style=invisible] 
  
  { rank=same; 32 }
  { rank=same; 35, 38 }
}


26 -- {12, 32}


{ rank=same; 26 }

}

這導致了這個 output:

上面graphviz代碼的輸出

如您所見,節點 18 位於藍色子集群內。 除了在 4 和 18 之間放置一個空白虛擬節點(如不可見節點 7 和 35)之外,是否有一種簡單的方法可以將該節點“開箱即用”?

但是,添加graph [newrank=true]並重新排列幾行會使事情變得更好:

graph G
{
graph [ranksep="0.25", nodesep="0.25" newrank=true]
rankdir = TB;
node [shape=ellipse, style=filled, fillcolor="#0068B4", color=white, fontcolor=white, penwidth=10]
edge [arrowtail="none"]

subgraph cluster_0 {
  node [fillcolor="#99CC00"]
  color="#99CC00"
  style=filled
  fillcolor=white
  fontcolor="#99CC00"
  label="12 is the root of\n26's left child\r"
    subgraph cluster_01 {
      node [fillcolor="#00B0F0"]
      color="#00B0F0"
      fontcolor="#00B0F0"
      style=filled
      fillcolor=white
      label="4 is the root of                         \n12's left child                         \r"
      7   [fillcolor=white]
      4 -- 13
      4 --  7 [style=invisible]
      7 -- 13 [style=invisible] 
      { rank=same; 7, 13 }
    }
      { rank=same; 4, 18 }
  12 -- {4,18}
  { rank=same; 12 }
}

subgraph cluster_1 {
  node [fillcolor="#C00000"]
  color="#C00000"
  style=filled
  fillcolor=white
  fontcolor="#C00000"
  label="32 is the root of\n26's right child\r"
  35   [fillcolor=white]
  32 -- 38
  32 -- 35 [style=invisible]
  35 -- 38 [style=invisible] 
  { rank=same; 32 }
  { rank=same; 35, 38 }
}
26 -- {12, 32}
{ rank=same; 26 }
}

給出: 在此處輸入圖像描述

暫無
暫無

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

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