2013-04-12 38 views
6

我想先顯示一個圖形,而不是先寫入文件。從Graphviz顯示圖像而不創建中間文件?

假設我有一個命令foo產生這個標準出來:

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

我想什麼做的是管foodot然後通過管道將結果轉換成一個命令,將在顯示圖像圖形環境。

foo | dot -Tpng | <display command> 

我發現了一個涉及臨時文件的解決方法。在OSX中,我可以執行以下操作:

foo | dot -Tpng > temp && open temp 

但是我仍然必須從文件系統中刪除文件。

如何顯示正在寫入標準的圖像?

回答

4

隨着ImageMagick的display命令,這些工作在Ubuntu 12.10(和最有可能的其他操作系統,太):

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

SVG具有與窗口順利縮放優勢(如果這就是你想要的)。

+1

我不得不在OSX上重新編譯imagemagick以使用X11,我現在有顯示器工作,但它不能正確讀取管道。我找到了一個解決方法:'display <(echo'digraph {a-> b; b-> c; c-> d;}'| dot -Tpng)' – tlehman

+1

另一個選擇是使用'dotty',例子[here (https://git.wiki.kernel.org/index.php/Aliases#Use_graphviz_for_display) – tlehman

+1

與iTerm一起使用的'imgcat'腳本可以在終端直接顯示圖像,這非常可愛: ) – tlehman

相關問題