首页 > 解决方案 > PNG文件未在graphviz dot程序中呈现

问题描述

我想将图像用作.dot嵌入到Rmarkdown项目中的程序中的节点。我不知道如何使用DiagrammeR. 节点和类似 HTML 的标签似乎可以工作,只是IMG属性不行。

到目前为止,以下是我的代码:

digraph structs {

  struct1 [shape=none, label=
    <<TABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\" POINT-SIZE=\"8\"> 
      <TR>
        <TD ROWPAN=\"2\">
          <FONT POINT-SIZE=\"16\">
            Car
          </FONT>
        </TD>
      </TR>
      <TR>
        <TD></TD>
      </TR>
      <TR>
        <TD>
          <FONT POINT-SIZE=\"10\">
            Engine Size
          </FONT>
        </TD>
      </TR>
      <TR>
        <TD>
          <FONT POINT-SIZE=\"10\">
            Paint Job
          </FONT>
        </TD>
      </TR>
      <TR>
        <TD></TD>
      </TR>
      <TR>
        <TD>
          <FONT POINT-SIZE=\"10\">
            AutoDrive ()
          </FONT>
        </TD>
      </TR>
    </TABLE>>
    ];

  car1 [shape=none, label=\"\", image=\"../resources/images/car-clip-art.png\"];

<-- This doesn't work either. And this comment is *not* in the program -->
car1 [label=
<<TABLE> 
<TR>
  <TD>
    <IMG SCALE=\"FALSE\" SRC=\"../resources/images/car-clip-art.png\"/>
  </TD>
</TR>
</TABLE>>
];

  struct1->car1
}

这是输出图像:

点码输出

如何让图像显示在输出中?

标签: graphvizdiagrammer

解决方案


可能 R 加载的 graphviz 库版本没有图像加载功能。你能找到它,并查看它的符号(使用 Windows 上适用的任何工具)来查看 loadimage() 的定义吗?例如 gd_loadimage、cairo_loadimage、gdiplus_loadimage 等。还可以尝试将图像转换为 JPEG,因为它通常是图像格式(或 GIF)中最低的最低公分母。

还要尝试不同的文件路径或绝对路径或没有目录的路径,以防对路径语法有一些误解。我想知道Windows中的路径分隔符是“/”还是“\”。当然,许多程序对此很灵活。我相信我们的代码只是为此交给了一个较低级别的库。

我不确定您的示例中的所有转义和嵌套 <> 但听起来好像已经弄清楚了,而且它必须是正确的。

斯蒂芬诺斯


推荐阅读