MC, 13:16 sobota, 10.03.2012 r.
Ilustracja do artykułu: GNUplot: część 16. - Generowanie wykresów za pomocą skryptów

GNUplot: część 16. - Generowanie wykresów za pomocą skryptów

W tej części poradnika do programu GNUplot, poruszymy jedną z najbardziej istotnych kwestii jaką jest używanie skryptów do generowania wykresów. Bez tego nie ma mowy o wygodnym tworzeniu co najmniej dość złożonych wykresów. Dlatego zachęcam do zapoznania się z treścią tego artykułu.

Czym są skrypty i dlaczego warto z nich korzystać?

Skrypty o których tu mowa, to nic innego jak pliki tekstowe ze zbiorem kolejnych poleceń do wykonania przez program GNUplot. Czyli innymi słowy, komendy które normalnie wydawalibyśmy w wierszu poleceń programu, zostają przeniesione do jednego pliku. Po co taki zabieg? Korzyści jest cały szereg. Przede wszystkim daje nam to możliwość prostego i wygodnego tworzenia naprawdę złożonych wykresów, niwelując przy tym zupełnie problem ich modyfikacji. Wykres niejako piszemy jak program, wykonujemy skrypt, sprawdzamy czy rezultat odpowiada naszym oczekiwaniom. Jeśli nie, to nie musimy zaczynać od nowa złożonego procesu tworzenia wykresu (bo czasem trzeba by zrobić reset ustawień i zacząć od nowa, żeby poprawić coś, co nam nie odpowiada), a po prostu nanosimy poprawkę w odpowiednim miejscu pliku, ponownie wykonujemy skrypt i patrzymy czy tym razem wszystko wygląda tak jak tego chcieliśmy. Dajmy na to, że już jest w porządku. Czy na tym koniec zalet? Absolutnie nie. Mamy wykres i mamy jego kod źródłowy w postaci skryptu, czyli w dowolnie późniejszym momencie możemy do niego wrócić, zmodyfikować, czy po prostu na jego podstawie zbudować inny, podobny. Skrypty są naprawdę niezbędne!

Jak wykonywać skrypty?

Zanim o samych skryptach, omówmy najpierw różne podejście do ich wykonywania dla różnych systemów operacyjnych. Na pewno dla systemów Linux jak i Windows zadziała wewnętrzne polecenie GNUplota, wczytujące i wykonujące skrypt - load "ściezka_do_pliku_skryptu". Jednak za znacznie wygodniejsze uważam rozwiązanie, co do którego mam pewność jeśli chodzi o systemy Linux, a o którym w kontekście Windowsa nic nie wiem i sprawdzić nie bardzo mam jak (jeśli Ty to wiesz to bardzo proszę o kontakt, a uzupełnię tę informację). Mam tutaj na myśli uruchomienie GNUplot-a już z parametrem jakim jest ścieżka do pliku skryptu. Zostanie on z miejsca wykonany bez konieczności naszej interakcji z programem, którego działanie po wykonaniu skryptu zostanie zakończone. Zatem podsumowując te dwie możliwości:
Wewnętrzna funkcja load:
$ gnuplot
> load "ścieżka_do_naszego_skryptu";
Uruchomienie GNUplot-a z parametrem:
$ gnuplot "ścieżka_do_naszego_skryptu"

A jak wyglądają te skrypty?

Zajmijmy się teraz samymi skryptami. Otóż są zwyczajne pliki tekstowe, w których zapisujemy kolejne komendy do wykonania. Teoretycznie komendy te powinny być rozdzielone średnikami, tak jak to ma miejsce podczas zwykłego tworzenia wykresów, jednak gdy każda komenda jest w osobnej linii, nie jest to wymagane. Ja jednak uważam, że najlepiej zarówno rozdzielać je średnikami, jak i umieszczać polecenia w osobnych wierszach pliku. Jeśli zaś idzie o komentarze, to używa się do nich krzyżyka # (wszystko co nastąpi po tym znaku, w danej linii jest traktowane jak komentarz). To właściwie wszystko co powinniśmy wiedzieć.

To może jakiś przykład?

Jako przykład pokażę skrypt, który ostatnio używałem do wygenerowania jednego z wykresów. Oto on:
# Prawo Stefana-Boltzmanna

set term gif enhanced size 800,600;
set out "prawoSB.gif";

FIT_LIMIT = 1e-20;
fit a*x+b "prawoSB.dane" via a,b;

set title "Wykres U_{det} = f(T^4 - T_0^4) z aproksymacją liniową";
set xlabel "T^4 - T_0^4 [K^4]";
set ylabel "U_{det} [{/Symbol m}V]";

plot "prawoSB.dane" pt 3 with xyerrorbars notitle, a*x+b notitle;

#a = 6.67442e-10 +/- 1.911e-11 (2.864%)
#b = -2.53652 +/- 0.687 (27.09%)

Kilka uwag praktycznych.

Na sam koniec wpisu, chciałbym podzielić się kilkoma uwagami praktycznymi, które mogę jeszcze nieco usprawnić pracę z GNUplot-em.

Nie ma co ciągnąć linijek skryptu w nieskończoność. Przy szczególnie długich poleceniach (najczęściej plot), warto nieco lepiej zorganizować sobie strukturę polecenia i przenosić jego kolejne części do następnego wiersza. Robimy to za pomocą znaku '\'. Spójrzmy na poniższy przykład:

plot sin(x) notitle, \
cos(x+5) notitle, \
3*x+15 title "Jakaś prosta";

Jeśli używasz Emacsa, to warto skorzystać z tak zwanej magicznej pierwszej linii, w której możemy definiować lokalne parametry dokumentu. Wystarczy na początku skryptu dopisać:

#-*- compile-command: "gnuplot plik_skryptu";-*-
Dzięki temu, będziemy mogli niejako skompilować skrypt, przy pomocy kombinacji klawiszowej przypisanej operacji kompilacji.

Jeżeli używasz programu gEdit, lub dowolnego innego w którym możemy włączyć obsługę terminala, to dobrze jest to zrobić, by móc wygodnie sprawdzać rezultaty skryptu, bez przeskakiwania z okna do okna. Dla gEdit-a zrobimy to wybierając kolejno: Edycja > Preferencje > Wtyczki > Osadzony terminal.

Zastanów się również, czy nie będzie dla Ciebie wygodne by od razu po wykonaniu skryptu, włączyć i zobaczyć wygenerowany wykres. Jeśli tak, to wystarczy połączyć polecenie wykonaniu skryptu, z uruchomieniem odpowiedniej przeglądarki obrazów. Poniższy przykład uruchamia przeglądarkę Eye of GNOME.

$ gnuplot "ścieżka_do_naszego_skryptu"; eog wygenerowany_plik_graficzny_wykresu

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: