gnuplot
czyli jak zrobić wykres, żeby się nie narobić
Leszek Kłosowicz
Uniwersytet Śląski, Instytut Informatyki
14 listopada 2008
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
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
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
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
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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.
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.
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
∗∗ – 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
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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 ) –a 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): log 10(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)
programowania Fortran i C. Do zmiany priorytetu działań służą okrągłe nawiasy:
−2 ∗ ∗2 – wynik: −4 (−2) ∗ ∗2 – wynik: 4
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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.
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
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
plot wyrażenie
rysuje wykres podanego wyrażenia (funkcje jednowymiarowe)
plot sin(x)
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
plot ’dane.txt’ using 1 : 2
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
plot ’dane.txt’ using 1 : 2 smooth bezier
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
unset mouse plot sin(x )
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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.
w wyniku wykonania poniższego skryptu na dysku w bieżącym katalogu gnuplota powstanie plik wynik.png z wykresem funkcji
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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).
set xrange [−100 : 100]
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
plot 0.4 ∗ x ∗ ∗3.5 ti ”kreski w gnuplocie”
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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).
set xtics −pi , pi /4, pi
set ytics (”nisko” 0, ”wysoko” 1)
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
set label środek at 0, 0
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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).
set xlabel ”oś iksów”
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
splot wyrażenie
rysuje wykres podanego wyrażenia (funkcje dwuwymiarowe)
splot sin(x)*cos(y)
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
set pm3d
nakłada teksturę na siatkę
set pm3d
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
set isosamples wartość
reguluje jakość wykresu
im większa wartość, tym lepsza jakość (niestety wzrasta, i to znacznie, czas tworzenia wykresu)
set isosamples 10
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
set isosamples 50
set isosamples 100
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
set hidden3d
ukrywa linie wykresu
set hidden3d
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
set pm3d map
tworzy mapę (rzut pionowy) wykresu
set pm3d map
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
set palette rgbformulae 21, 22, 23
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
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
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
plot x < 5 ? 0.5 ∗ x : sin(x )
kulturalne zamknięcie gnuplota lub przerwanie wykonywania skryptu
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
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
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
show paramet
wyświetla ustawienia parametru
Przykład
show xrange – wyświetla ustawienie zakresu dla zmiennej x show mouse – wyświetla ustawienie kursora myszki
wyświetla bieżący katalog roboczy gnuplota
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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:
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
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
uruchamia interaktywną powłokę systemu operacyjnego (w przypadku Windowsa jest to linia komend)
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
powoduje ponowne rozpoczęcie przetwarzania skryptu umożliwia tworzenie ruchomych wykresów
Przykład
skrypt wykorzystujący komendę reread
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład a = −10 load ’skrypt.txt’
wynikiem wykonania powyższych komend będzie przesuwający się w poziomie wykres funkcji sin(x )
wyświetla informacje o ustawieniach aktualnie używanego terminalu lub palety
Przykład
test terminal test palette rgb
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
reset
przywraca początkowe wartości wszystkim parametrom gnuplota (nie dotycczy poleceń set term oraz set output)
czyści ekran lub „urządzenie wyjściowe” ustawione poprzez komendę set output
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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)
wykonanie poniższego skryptu utworzy plik wynik.tex, w którym zapisany jest wykres
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
można go umieścić w za pomocą \include{wynik} w tekście LATEX
po „skompilowaniu” tekstu wykres będzie widoczny w tekście
Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Informacje
Dalsze informacje znajdują się w dokumentacji gnuplota (nieco ponad 200 stron, więc każdy znajdzie coś interesującego).