Gnuplot w pracy administratora

Tue 22 February 2011 by admin

Wizualizacja danych w postaci wykresu często kojarzona jest z arkuszami kalkulacyjnymi. Co jednak gdy nie mamy pod ręką arkusza kalkulacyjnego lub gdy zamierzamy w zautomatyzować tworzenie wykresów, z pomocą przychodzi nam pakiet Gnuplot.

Gnuplot [1]  kojarzony przy najmniej przeze mnie z czasami studenckimi, kiedy wdzięcznie wykorzystywany był do kreślenia przedziwnym krzywych, których znaczenie skwapliwie opisywaliśmy w sprawozdaniach. Tym razem czasy studenckie  i zaawansowane użycie gnuplota odsuwam na bok, bo chodzi o prostą wizualizację danych. Załóżmy, że posiadamy zbiór danych otrzymanych z programu mierzącego czas odpowiedzi danego serwera www np. z popularnego narzędzia  JMeter[2]. Dane pomiarowe uzyskujemy w nocy i od razu chcielibyśmy je zwizualizować na wykresie,  na osi X załóżmy, że posiadamy testowaną liczbę użytkowników zaś na osi Y średnie czasy odpowiedzi. Wyniki jakie posłużą nam wyrysowania wykresu znajdują się w osobnych plikach, scalamy je do jednego pliku i dzielimy na kolumny, które następnie wybierać będziemy w kodzie samego gnuplot'a. Do podziału pliku na kolumny skorzystamy:

$ cat results | pr -tT --columns=4 > results_formatted

Następnie przy pomocy przykładowego kodu gnuplota:

set title "Average response time"
#+ legenda
set key box
set key bottom right
#- legenda
set size 1.5,1.5
set grid
set xlabel "Users #"
set ylabel "Response time [ms]"
set term png
set output "/home/foo/bar.png"
plot

# wspominany wybor kolumn using col1:col2
"/home/foo/results_formatted" using 1:2 title "/" with lines,

"/home/foo/results_formatted" using 1:3 title "/page1" with lines,
"/home/foo/results_formatted" using 1:4 title "/page2" with lines,
"/home/foo/results_formatted" using 1:5 title "/page3" with lines

wygenerujemy szukany wykres w formacie .png:

$ gnuplot < graph

prezentujący się następująco [plot1.png][]

Zatem wystarczy tylko tyle i mamy gotowy wykres, bez angażowania arkusza kalkulacyjnego i w pełni automatycznie, co oszczędza czas i przypomina jakie to karkołomne sztuczki wyczyniało się z gnuplot'em i od razu przyjemniej się robi ;)

[1] http://www.gnuplot.info/

[2] http://jakarta.apache.org/jmeter/

plot1.png