【问题标题】:How can I create a table like this with Graphviz (Table with arrow connecting rows)如何使用 Graphviz 创建这样的表格(带有箭头连接行的表格)
【发布时间】:2022-01-28 05:36:33
【问题描述】:

我需要用箭头从一行指向另一行。

在左侧,箭头从上到下指向,在右侧反之亦然。

此表将用于文档,我的计划是使用 python 以编程方式生成 .dot 文件。下图中的原始表格是使用 Latex 生成的,但是将运行此流程的服务器没有安装任何 pdf-latex 转换器。

我在图形上尝试了下面的示例代码,但它没有给出所需的输出。

digraph {
    graph [pad="0.5", nodesep="0.5", ranksep="2", splines="ortho"];
    node [shape=plain]
    rankdir=LR;


Foo [label=<
<table border="0" cellborder="1" cellspacing="0">
  <tr>  <td><i>Input Foo</i></td> <td> two </td>   </tr>
  <tr>  <td port="1">one</td> <td> two </td></tr>
  <tr>  <td port="2">two</td> <td> two </td></tr>
  <tr>  <td port="3">three</td> <td> two </td></tr>
  <tr>  <td port="4">four</td> <td> two </td></tr>
  <tr>  <td port="5">five</td> <td> two </td></tr>
  <tr>  <td port="6">six</td> <td> two </td></tr>
</table>>];



Foo:3 -> Foo:2;
Foo:3 -> Foo:6;
Foo:6 -> Foo:1;

}

【问题讨论】:

    标签: graphviz pygraphviz


    【解决方案1】:

    恭喜,您在“正交”实现中发现了一个错误。
    如果您删除 splines 属性,或更改值,您将从正确的端口获得边缘。
    如果您随后添加定向端口(n、s、e、w、...),则边缘连接是有意义的。
    但是边缘将是循环,而不是您想要的方形边缘。 (见下文)。
    可以使用直线和每个边缘的两个不可见点来“滚动你自己的”边缘。但这将是一个双重麻烦,因为涉及到一张桌子。
    您还可以输出为“点”格式,对其进行后处理以创建方形边缘,然后通过neato -n2 运行它,但这又是一些真正的麻烦。

    digraph {
      graph [pad="0.5", nodesep="0.5", ranksep="2" ]  //  splines=ortho]
      node  [shape=plain]
     // rankdir=LR;  // makes a very small difference
    
    Foo [label=<
    <table border="0" cellborder="1" cellspacing="0">
      <tr>  <td><i>Input Foo</i></td><td> two </td>   </tr>
      <tr>  <td port="1">one</td><td> two </td></tr>
      <tr>  <td port="2">two</td><td> two </td></tr>
      <tr>  <td port="3">three</td><td> two </td></tr>
      <tr>  <td port="4">four</td><td> two </td></tr>
      <tr>  <td port="5">five</td><td> two </td></tr>
      <tr>  <td port="6">six</td><td> two </td></tr>
    </table>>];
    
    Foo:3:w -> Foo:2:w;
    Foo:3:w -> Foo:6:w;
    Foo:6:w -> Foo:1:w;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多