【问题标题】:PNG file not rendering in graphviz dot programPNG文件未在graphviz dot程序中呈现
【发布时间】:2019-11-13 22:50:40
【问题描述】:

我想在嵌入到Rmarkdown 项目中的.dot 程序中使用图像作为节点。 我不知道如何使用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
}

这是输出图像:

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

【问题讨论】:

  • 我通过安装 graphviz 来使用 dot.exe 创建图形,然后使用 knitr::include_graphics() 将输出包含在我的 Rmarkdown 文件中。这很烦人,因为它引入了额外的依赖。我宁愿完全呆在 R 环境中

标签: graphviz diagrammer


【解决方案1】:

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

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

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

斯蒂芬·诺斯

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多