从Graphviz显示图像而不创建中间文件?

tle*_*man 8 command-line graphviz

我想先显示图形而不先写文件.

假设我有一个命令foo在标准输出上产生这个:

digraph foogrph {
   a -> b;
   a -> c;
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是管道foo输入dot然后将结果传递到一个命令,该命令将在图形环境中显示图像.

foo | dot -Tpng | <display command>
Run Code Online (Sandbox Code Playgroud)

我找到了一个涉及临时文件的解决方法.在OSX中,我可以执行以下操作:

foo | dot -Tpng > temp && open temp
Run Code Online (Sandbox Code Playgroud)

但我仍然需要从文件系统中删除该文件.

如何显示正在写入标准的图像?

Tom*_*get 6

使用ImageMagick的display命令,它们可以在Ubuntu 12.10(以及最可能的其他操作系统)上运行:

dot abac.dot -Tsvg | display
dot abac.dot -Tpng | display
Run Code Online (Sandbox Code Playgroud)

SVG的优点是可以平滑地缩放窗口(如果您要的话)。

  • 我不得不在 OSX 上重新编译 imagemagick 以使用 X11,我现在有显示工作,但它不能正确地从管道中读取。我找到了一个解决方法:`display &lt;(echo 'digraph { a-&gt;b; b-&gt;c; c-&gt;d; }' | dot -Tpng)` (2认同)
  • 同样,与iTerm一起使用的`imgcat`脚本可以直接在终端上显示图像,这非常好:) (2认同)