2013-07-12 42 views
1

我想爲graphViz中的節點分配多種顏色。最佳的解決方案將是一個餅圖格式的圓形節點。graphViz:如何爲節點分配多種顏色

我知道一種使用HTML標籤的方法。下面是一個簡單的例子:

graph G{ 
    1--2; 
    1[shape=none,margin=0,label=< 
    <table BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"> 
     <tr> 
      <td bgcolor="red"></td> 
      <td bgcolor="blue"></td> 
     </tr> 
    </table>   >]; 
    2[shape=circle,style=filled,fillcolor=yellow]; 
    3[shape=circle,style=filled,fillcolor=yellow]; 
} 

然而,也存在一些問題:

  1. 節點1沒有標籤(我希望它有標有 「1」)

  2. 連接節點1到節點2的邊並沒有完全連接到節點1.換句話說,節點1和連接到節點2的邊之間存在空間。

  3. 節點1是矩形的。我怎麼能有一個圓形節點?

如果沒有辦法克服這些問題,請您提供其他圖形可視化軟件嗎?

回答

0

對於你的第一個問題,它確實取決於你對雙色節點的實現。你已經在這個職位描述的多個解決方案:Two colours in one node with graphviz's dot?以您目前的代碼,添加標籤,最簡單的方法就是把它寫在下面的代碼裏面OT了<td></td>標記,如:

graph G{ 
    1--2; 
    1[shape=none,margin=0,label=< 
    <table BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"> 
     <tr> 
      <td bgcolor="red">1</td> 
      <td bgcolor="blue"></td> 
     </tr> 
    </table>   >]; 
    2[shape=circle,style=filled,fillcolor=yellow]; 
    3[shape=circle,style=filled,fillcolor=yellow]; 
} 

但是,它贏得了」 t居中,我認爲一個漸變節點是可取的。

對於你的第二個問題,你需要聲明你的陣列的單元格的端口,並用它們來錨定的邊畫邊時:

graph G{ 
    1[shape=none, label=< 
    <table MARGIN="0" BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"> 
     <tr> 
      <td bgcolor="red" port="L">1</td> 
      <td bgcolor="blue" port="R"></td> 
     </tr> 
    </table>   >]; 
    2[shape=circle,style=filled,fillcolor=yellow]; 
    3[shape=circle,style=filled,fillcolor=yellow]; 
    1:L--2; 
} 

爲您3問題,根據http://www.graphviz.org/doc/info/shapes.html,你有可能創建自定義形狀。我不知道有什麼辦法來創建這樣的圓形數組,所以你應該朝着這個方向看,我認爲。

2

您可以通過

graph G{ 
    1--2; 
    1[shape=circle,style=wedged,fillcolor="red:blue"]; 
    2[shape=circle,style=filled,fillcolor=yellow]; 
    3[shape=circle,style=filled,fillcolor=yellow]; 
} 

實現這個方法的好處是,你可以在一個節點使用超過2種顏色。