将Graphviz节点分组为表格

时间:2019-12-07 15:09:20

标签: graphviz

我有以下Graphviz群集,其中有> 100个节点作为列表呈现,看起来很草率。

Cluster

我想使该群集看起来像一个具有n列和k行的表。 这是一个图表外观的示例:

Diagram

有人知道如何获得期望的结果吗?这是我为尝试重现以上图表而编写的代码:

main = GraphViz.new(:G, rankdir: "TB")
rows = gets.to_i
columns = gets.to_i

1.upto(rows) do |row|
  row_graph = GraphViz.new("#{row}_row", rankdir: "LR")

  1.upto(columns) do |column|
    node_num = column + columns * (row - 1)
    row_graph.add_node("node_#{row}#{column}", label: "Node #{node_num}", shape: "box")
  end
end

main.output(png: "table_graph.png")

1 个答案:

答案 0 :(得分:2)

找到了解决方案:

digraph {
  node [shape=box width=1]
  {rank=same Node1 Node2 Node3 Node4}
  {rank=same Node5 Node6 Node7 Node8}
  {rank=same Node9 Node10 Node11 Node12}
  Node1 -> Node5 -> Node9 [style=invis]
}

相应的红宝石代码可以通过dot2ruby工具生成