Przypuśćmy, że mam program, który okresowo drukuje linie z danymi, jak mogę przekształcić je następnie w wykres graficzny, który aktualizuje się za każdym razem, gdy dostępna jest nowa linia?
$ ./prog 10 44 20 66 30 55 40 58 50 59 55 58 60 77 ^ C $ ./prog | scrollingplot Pojawia się okno i aktualizacje każdej linii drukowane: 80 | | ---- | ---- ______...__ / | / ----- | - 40 | ------------------------------- 10 20 30 40 50 60 # Pamiętaj, że fabuła w stylu ASCII jest tylko na przykład, # Chcę proste okno X jak w mplayerze.
Jest wystarczająco dużo narzędzi do przechowywania danych statycznych, ale nie widziałem narzędzi do aktualizacji danych (z wyjątkiem ksysguard
).
mplayer
.Odpowiedzi:
Jeśli potrafisz uruchomić Perla, możesz zajrzeć do tego skryptu, który wydaje się robić dokładnie to, co chcesz. Używa GnuPlot do wyświetlania wykresu.
http://users.softlab.ece.ntua.gr/~ttsiod/gnuplotStreaming.html
GnuPlot jest potężny i ma wiele funkcji. Jeśli chcesz dowiedzieć się więcej na ten temat, spróbuj googlingu w tutorialu gnuplot .
źródło
for((;;)) { cat /proc/loadavg | grep -o '^[^ ]*' | sed 's/^/0:/' ; sleep 1; } | driveGnuPlotStreams.pl 1 40 0 2 qqq 0
-noraise
dognuplot
i podejmowania--stream
i--lines
domyślna to działa dobrze.Może myślę zbyt prosto, ale: Wyczyść ekran
clear
i ponownie uruchom program do drukowania?źródło
display
lubmplayer
), który może również wyświetlać oś współrzędnych, wyświetlać gładkie linie i tak dalej.