2013-04-12 10 views
6

Chciałbym wyświetlić wykres bez uprzedniego napisania pliku.Wyświetl obraz z Graphviz bez tworzenia pliku pośredniego?

Załóżmy, że mam polecenie foo która produkuje to na standardowe wyjście:

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

Co chciałbym zrobić, to rura foo do dot a następnie rura wyniki do polecenia, które będą wyświetlać obraz w sposób środowisko graficzne.

foo | dot -Tpng | <display command> 

Znalazłem obejście, które obejmuje pliki tymczasowe. W systemie OSX mogę wykonać następujące czynności:

foo | dot -Tpng > temp && open temp 

Ale nadal muszę usunąć plik z systemu plików.

Jak mogę wyświetlić obraz, który jest zapisywany do standardowego wyjścia?

Odpowiedz

4

Z polecenia wyświetlania ImageMagick za te prace na Ubuntu 12.10 (i prawdopodobnie innych systemów operacyjnych, zbyt):

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

SVG ma tę zaletę, płynnie skalowanie z oknem (jeśli to, co chcesz).

+1

Musiałem przekompilować imagemagick na OS X, aby używać X11, mam teraz działający wyświetlacz, ale nie czyta się poprawnie z rury. Znalazłem obejście: 'display <(echo 'digraph {a-> b; b-> c; c-> d;}' | dot -Tpng)' – tlehman

+1

Inną opcją jest użycie 'dotty', przykładów [tutaj na wiki git] (https://git.wiki.kernel.org/index.php/Aliases#Use_graphviz_for_display) – tlehman

+1

Również skrypt 'imgcat', który współpracuje z iTerm, może wyświetlać obraz bezpośrednio na terminalu, jest całkiem słodki:) – tlehman

Powiązane problemy