gnuplot czyli jak zrobić wykres, żeby się nie narobić Uniwersytet Śląski, Instytut Informatyki 14 listopada 2008
Co to jest gnuplot i co nam oferuje? program do tworzenia wykresów oraz wizualizacji danych rozwijany od 1986 roku aktualna wersja 4.2.4 (trwają prace nad wersją 4.3) wieloplatformowość (UNIX, IBM OS/2, MS Windows, DOS, Macintosh, VMS, Atari oraz inne) tworzenie wykresów 2D i 3D tworzenie wykresów słupkowych dowolne formatowanie wykresów przetwarzanie skryptów rysowanie wykresów na podstawie danych z pliku możliwość zapisu wykresu do pliku graficznego (różny format zapisu) nie wymaga instalacji ściągamy i działa
Źródła informacji o gnuplocie http://www.gnuplot.info/ główna strona gnuplota http://www.gnuplot.info/docs/gnuplot.pdf fajowa dokumentacja http://t16web.lanl.gov/kawano/gnuplot/index-e.html fajowe przykłady Gnuplot in Action książka autorstwa Philippa K. Janerta
Skąd wziąć gnuplota? http://sourceforge.net/project/downloading.php?group_id=2055&use_mirror= heanet&filename=gp424win32.zip&82603477 gnuplot do pobrania dla systemu Windows
Jak tworzyć wykresy? wydawać komendy bezpośrednio w programie gnuplot (tryb interaktywny) utworzyć skrypt i przekazać go do wykonania gnuplotowi Rysunek: Tryb interaktywny gnuplota Rysunek: Wywołanie skryptu w gnuplocie
Co lepsze? tryb interaktywny jeśli chcemy łatwo i szybko zrobić wykres (dodatkowo możemy ułatwić sobie pracę wykorzystując opcje z menu gnuplota) wykonanie skryptu jeżeli chcemy rysować wykresy w trakcie działania programu i wyświetlić je jako obraz w trakcie jego działania Istnieje również możliwość wykonania skryptu odpowiednią komendą w trybie interaktywnym.
Wyrażenia Tworzenie wyrażeń, które następnie będą wizualizowane, jest proste i intuicyjne. W skład wyrażeń wchodzą zmienne, operatory oraz funkcje. W gnuplocie możliwe jest również wykorzystanie instrukcji warunkowych, co pozwala na rysowanie wykresów funkcji, które są określone różnymi wzorami w zależności od przedziału dziedziny.
Operatory jednoargumentowe negacja liczby: a + jednoargumentowy plus (nie jest wykonywana żadna operacja): +a uzupełnienie do jedynki: a! logiczna negacja:!a! operacja silni: a! $ użycie argumentu (kolumny) w dla instrukcji using: $a wymagany argument typu całkowitoliczbowego
Operatory dwuargumentowe potęgowanie: a b mnożenie: a b / dzielenie: a/b % operacja modulo: a%b + dodawanie: a + b odejmowanie: a b == równość: a == b! = nierówność: a! = b < mniejsze niż: a < b <= mniejsze lub równe: a <= b > większe: a > b >= większe lub równe: a >= b & bitowe AND: a&b ˆ bitowe XOR: aˆb bitowe OR: a b && logiczne AND: a&&b logiczne OR: a b wymagane argumenty typu całkowitoliczbowego
Wybrane funkcje w gnuplocie abs(x) wartość bezwzględna: abs( 3) ceil(x) sufit: ceil(4.23) cos(x) kosinus: cos(0.5) exp(x) funkcja wykładnicza: exp(4) floor(x) podłoga: floor( 3.56) imag(x) część urojona liczby zespolonej: imag(3, 2) int(x) część całkowita liczby: int(12.23) log(x) logarytm naturalny (o podstawie e): log(4.5) log(10) logarytm dziesiętny (o podstawie 10): log10(13.3) rand(x) generator liczb pseudolosowych z zakresu [0, 1]: rand(0) real(x) część rzeczywista: real(3, 56) sgn(x) znak liczby (1 dla x > 0, 0 dla x = 0, 1 dla x < 0): sgn( 3) sin(x) sinus: sin(45) sqrt(x) pierwiastek kwadratowy: sqrt(4) tan(x) tangens: tan(12.83) liczba zespolona wymagana jako argument
Kolejność wykonywania działań w gnuplocie jest identyczna jak w językach programowania Fortran i C. Do zmiany priorytetu działań służą okrągłe nawiasy: 2 2 wynik: 4 ( 2) 2 wynik: 4
Oprócz wymienionych, gnuplot dostarcza również wiele innych operatorów i funkcji. Pozwalają one m. in. na przetwarzanie łańcuchów znaków, dat oraz odczytywanie danych pochodzących z klawiatury i myszki. gnuplot oferuje także możliwość definiowania własnych zmiennych oraz funkcji. Więcej na ten temat znajduje się w dokumentacji.
Subiektywny przegląd komend Do tworzenia wykresów służą komendy (polecenia). W dalszej części przedstawiono najistotniejsze z nich, a po nich te mniej istotne (ale to i tak nie wszystkie). Nieformalna budowa komendy nazwa parametry
plot wyrażenie rysuje wykres podanego wyrażenia (funkcje jednowymiarowe)
Przykład plot sin(x)
plot plik using kolumnax : kolumnay rysuje wykres na podstawie danych zawartych w pliku Przykład plik ze współrzędnymi punktów do zaznaczenia na wykresie
Przykład plot dane.txt using 1 : 2
plot plik using kolumnax : kolumnay smooth bezier rysuje wykres na podstawie danych zawartych w pliku i łączy poszczególne punkty linią Przykład plik ze współrzędnymi punktów do zaznaczenia na wykresie
Przykład plot dane.txt using 1 : 2 smooth bezier
Zapisywanie wykresów metoda pierwsza metoda dla terminalu typu windows w trybie interaktywnym wyłącznie kursora polecenie unset mouse wykonanie komendy rysującej kliknięcie prawym przyciskiem myszy na wykresie i wybranie opcji Copy to Clipboard wykres znajduje się w schowku systemowym można go następnie wkleić do programu graficznego w celu dalszej obróbki
Przykład unset mouse plot sin(x)
Zapisywanie wykresów metoda druga metoda dla skryptów bezpośrednie zapisywanie do plików ustawienie odpowiedniego terminalu set terminal png typ pliku ustawienie pliku wyjściowego, do którego zostanie zapisany wykres set output wynik.png komenda rysująca wykres zamknięcie pliku unset output Terminale gnuplot obsługuje około 80 terminali, m. in.: png, gif, corel, latex, windows, linux, itd. Pełna lista dostępnych terminali wraz z opisem ich parametrów znajduje się w dokumentacji gnuplota.
Przykład w wyniku wykonania poniższego skryptu na dysku w bieżącym katalogu gnuplota powstanie plik wynik.png z wykresem funkcji
set xrange ustawia zakres zmiennej x Przykład set xrange [ 100 : 100] na wykresie będzie widoczny przedział od 100 do 100 Analogicznie ustawia się zakres zmiennej y oraz z (w przypadku funkcji dwuwymiarowych).
Przykład set xrange [ 100 : 100]
Ustawienie opisu funkcji plot wyrażenie ti nazwa Przykład plot 0.4 x 3.5 ti kreski w gnuplocie ustawia nazwę funkcji na kreski w gnuplocie plot 0.4 x 3.5 ti funkcja nie zostanie opisana
Przykład plot 0.4 x 3.5 ti kreski w gnuplocie
set xtics ustawia etykiety na osi x Przykład set xtics 1, 2, 10 wyświetla liczby w zakresie od 1 do 10 co 2 jednostki set xtics 10 wyświetla liczby co 10 jednostek set xtics (1, 15, 23, 45) wyświetla liczby 1, 15, 23 i 45 w odpowiednim miejscu na osi set xtics ( nisko 1, w sam raz 0, wysoko 100) wyświetla napis nisko przy wartości 1, w sam raz przy wartości 0 oraz wysoko dla wartości 100 Analogicznie ustawia się etykiety na osiach y oraz z (w przypadku funkcji dwuwymiarowych).
Przykład set xtics pi, pi/4, pi set ytics ( nisko 0, wysoko 1)
set label tekst ustawia etykiety w dowolnym punkcie na wykresie Przykład set label środek at 0, 0 w punkcie (0, 0) zostanie wyświetlony tekst środek
Przykład set label środek at 0, 0
set xlabel tekst ustawia opis osi x Przykład set xlabel oś iksów Analogicznie ustawia się etykiety na osiach y oraz z (w przypadku funkcji dwuwymiarowych).
Przykład set xlabel oś iksów
splot wyrażenie rysuje wykres podanego wyrażenia (funkcje dwuwymiarowe)
Przykład splot sin(x)*cos(y)
set pm3d nakłada teksturę na siatkę
Przykład set pm3d
set isosamples wartość reguluje jakość wykresu im większa wartość, tym lepsza jakość (niestety wzrasta, i to znacznie, czas tworzenia wykresu)
Przykład set isosamples 10
Przykład set isosamples 50
Przykład set isosamples 100
set hidden3d ukrywa linie wykresu
Przykład set hidden3d
set pm3d map tworzy mapę (rzut pionowy) wykresu
Przykład set pm3d map
set palette definiuje teksturę nakładaną na wykres Przykłady set palette gray tekstura w odcieniach szarości set palette positive tekstura normalna set palette negative tekstura odwrócona względem positive set palette rgbformulae 21, 22, 23 przykładowa (kulturalna) tekstura zdefiniowana przez użytkownika
Przykład set palette rgbformulae 21, 22, 23
if (warunek) instrukcja; else instrukcja umożliwia wykonanie pewnych czynności przy spełnionym warunku pojedynczą instrukcję można zastąpić blokiem instrukcji (każdą instrukcję oddziela się wówczas średnikiem: instrukcja1; instrukcja2;... ; instrukcjan;) Przykład a = 10 if (a = 10) plot 2 x; else plot 1.4 x 3 a = 10 if (a = 10) plot 2 x; a = a 1; else plot 1.4 x 3
Operator?: działa tak samo jak w języku C a?b:c jeżeli wartość wyrażenia a jest różna od 0, to obliczane i zwracane jest wyrażenie b, w przeciwnym wypadku c operator pomocny przy tworzeniu wykresów funkcji określonych różnymi wzorami dla różnych przedziałów dziedziny oraz rysowaniu punktów spełniających zadany warunek
Przykład plot x < 5? 0.5 x : sin(x)
quit lub exit kulturalne zamknięcie gnuplota lub przerwanie wykonywania skryptu
help temat wyświetla informacje dotyczące określonego w parametrze tematu można również użyć samej komendy help Przykład help pwd wyświetla informacje dotyczące komendy pwd
unset paramet przywraca standardową gnuplotową wartość dla parametru Przykład unset xrange ustawienie domyślnego zakresu dla zmiennej x unset mouse wyłączenie kursora myszki na wykresie
show paramet wyświetla ustawienia parametru Przykład show xrange wyświetla ustawienie zakresu dla zmiennej x show mouse wyświetla ustawienie kursora myszki
pwd wyświetla bieżący katalog roboczy gnuplota
cd ścieżka służy do zmiany bieżącego katalogu roboczego gnuplota zamiast apostrofów można użyć cudzysłowów, ale wtedy pojedynczy znak backslash \ należy podwoić \\ (zalecane jest używanie apostrofów) Przykład cd c:\gnuplot nowym katalogiem roboczym będzie c:\gnuplot cd c:\gnuplot błędny zapis (pojedynczy backslash) cd c:\\gnuplot OK cd.. przejście do katalogu nadrzędnego cd d: zmiana katalogu roboczego na dysk d:
pause czas tekst polecenie wstrzymujące działania gnuplota na określony czas wstrzymanie może być połączone z wyświetleniem pewnego tekstu umożliwia również oczekiwanie na reakcję użytkownika (np. naciśnięcie klawisza myszki lub klawiatury) Przykład pause -1 oczekiwanie na naciśnięcie klawisza ENTER pause 5 oczekiwanie przez 5 sekund pause 3 Postój wyświetlanie przez 3 sekundy napisu Postój
system komenda wykonuje polecenie sytemu operacyjnego Przykład system copy skrypt.txt c:\archiwum kopiuje plik skrypt.txt z roboczego katalogu gnuplota do katalogu c:\archiwum
shell uruchamia interaktywną powłokę systemu operacyjnego (w przypadku Windowsa jest to linia komend)
load plik umożliwia wykonanie skryptu zapisanego w pliku możliwe jest zagnieżdżanie wykonywania skryptów Przykład Rysunek: Wywołanie skryptu w trybie interaktywnym Rysunek: Wywołanie skryptu z innego skryptu
reread powoduje ponowne rozpoczęcie przetwarzania skryptu umożliwia tworzenie ruchomych wykresów Przykład skrypt wykorzystujący komendę reread
Przykład a = 10 load skrypt.txt wynikiem wykonania powyższych komend będzie przesuwający się w poziomie wykres funkcji sin(x)
test terminal palette wyświetla informacje o ustawieniach aktualnie używanego terminalu lub palety Przykład test terminal test palette rgb
reset przywraca początkowe wartości wszystkim parametrom gnuplota (nie dotycczy poleceń set term oraz set output)
clear czyści ekran lub urządzenie wyjściowe ustawione poprzez komendę set output
set terminal latex ustawia terminal wyjściowy na plik zgodny z systemem LATEX umożliwia zapis wykresu do pliku z rozszerzeniem.tex taki plik z zapisanym wykresem można następnie umieścić w tekście, który został napisany w LATEX za pomocą instrukcji \include{plik} (nazwa pliku bez rozszerzenia.tex)
Przykład wykonanie poniższego skryptu utworzy plik wynik.tex, w którym zapisany jest wykres
Przykład można go umieścić w za pomocą \include{wynik} w tekście LATEX
Przykład po skompilowaniu tekstu wykres będzie widoczny w tekście
Informacje Dalsze informacje znajdują się w dokumentacji gnuplota (nieco ponad 200 stron, więc każdy znajdzie coś interesującego).