【问题标题】:graphviz drawing graph verticallygraphviz 垂直绘制图形
【发布时间】:2025-12-27 01:20:13
【问题描述】:

我正在使用 graphviz 来绘制有向图。现在的事情是,虽然我能够正确生成图形,但图形是水平设计的,这不符合我的要求。那么,如何垂直绘制有向图 请帮我解决这个问题

【问题讨论】:

标签: graphviz


【解决方案1】:

鉴于以下脚本,我已从 cmets 提取到问题并对其进行了编辑,通过删除一些无关的分号使其成功运行:

digraph G { 
    graph [ bgcolor=lightgray, resolution=128, fontname=Arial, fontcolor=blue, fontsize=10 ]; 
    node [ fontname=Arial, fontcolor=blue, fontsize=10]; 
    edge [ fontname=Helvetica, fontcolor=red, fontsize=10 ]; 
    "arunachaltourism.com/" -> "webcomindia.biz/profile.php"; 
    "arunachaltourism.com/#" -> "arunachaltourism.com/";
    "arunachaltourism.com/aalo.php" -> "arunachaltourism.com/";
} 

我将脚本称为x.dot。现在,运行:

dot x.dot -Tjpg -o x.jpg

...产生:

... 因为默认是rankdir=TB。插入:

rankdir=LR

...作为脚本的第二行并再次通过dot 运行脚本给出:

因此,我不清楚为什么第一次可能会水平绘制图表,但您将能够看到使用rankdir 可以使图表水平或垂直显示。

【讨论】:

  • 这正是我想要的
  • 完美答案;改变排名方向有帮助。
  • 默认是TB,不是BT
  • 谢谢@bsmk。好眼力!我已编辑我的答案以更正它。
【解决方案2】:

(老问题,但为什么不呢!)

你也可以运行:

dot -Grankdir=LR -Tpng myfile.dot -ogeneratedpng.png

【讨论】:

    【解决方案3】:

    您可以在点文件中使用rankdir 作为属性:

    digraph G {
         rankdir=LR;  //left to right
         //B bottom  T top  L left R right
          start->a1;
          a1 -> b3;
          b2 -> a3;
          a3 -> a0;
          a3 -> end;
          b3 -> end;
        }
    

    脚本从左到右生成如下图表:

    你可以试试脚本online

    【讨论】: