14

我想在不先写入文件的情况下显示图表。

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

digraph foogrph {
   a -> b;
   a -> c;
}

我想做的是通过管道foo输入dot,然后将结果输入一个命令,该命令将在图形环境中显示图像。

foo | dot -Tpng | <display command>

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

foo | dot -Tpng > temp && open temp

但我仍然必须从文件系统中删除文件。

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

4

4 回答 4

13

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

dot abac.dot -Tsvg | display
dot abac.dot -Tpng | display

SVG 具有随窗口平滑缩放的优点(如果这是您想要的)。

于 2013-04-13T00:19:49.673 回答
2

在 OSX 和 iTerm2 上,您可以执行以下操作(假设安装了imgcat

dot abac.dot -Tpng | imgcat

在此处输入图像描述

于 2019-02-20T01:03:03.033 回答
1

在 Linux 上,您也可以只使用-Tx11:cairo来显示直接 X11 窗口。

于 2018-12-14T04:17:47.117 回答
0

要完成已接受的答案(完全可以),如果还想避免使用.dot文件:

echo 'digraph { a -> b }' | dot -Tpng | display

(这仅适用于linux,我也第一次尝试eog似乎不接受通过管道的png)

改编自 rom 的graphviz 命令行使用文档

于 2021-11-23T14:08:27.677 回答