将 Graphviz 节点分组为 table
Group Graphviz nodes as a table
我有以下 Graphviz 集群,其中 > 100 个节点呈现为列表,看起来很草率。
我想让这个集群看起来像一个有 n 列和 k 行的 table。
这是图表的示例:
有没有人知道如何达到预期的结果?这是我为重现上图而编写的代码:
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")
找到解决方案:
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]
}
对应的ruby代码可以通过dot2ruby
工具生成
我有以下 Graphviz 集群,其中 > 100 个节点呈现为列表,看起来很草率。
我想让这个集群看起来像一个有 n 列和 k 行的 table。 这是图表的示例:
有没有人知道如何达到预期的结果?这是我为重现上图而编写的代码:
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")
找到解决方案:
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]
}
对应的ruby代码可以通过dot2ruby
工具生成