Pobierz

Transkrypt

Pobierz
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Ź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
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Jak tworzyć wykresy?
wydawać komendy bezpośrednio w programie gnuplot (tryb interaktywny)
utworzyć skrypt i przekazać go do wykonania gnuplotowi
Rysunek: Tryb interaktywny gnuplota
Leszek Kłosowicz
Rysunek: Wywołanie skryptu w
gnuplocie
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.
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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.
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Operatory dwuargumentowe
∗∗ – potęgowanie: a ∗ ∗b
<= – mniejsze lub równe: a <= b
∗ – mnożenie: a ∗ b
> – większe: a > b
/ – dzielenie: a/b
% – ` operacja modulo: a%b
+ – dodawanie: a + b
>= – większe lub równe: a >= b
& – ` bitowe AND: a&b
ˆ– ` bitowe XOR: aˆb
− – odejmowanie: a − b
| – ` bitowe OR: a|b
== – równość: a == b
&& – ` logiczne AND: a&&b
! = – nierówność: a! = b
|| – ` logiczne OR: a||b
< – mniejsze niż: a < b
` – wymagane argumenty typu całkowitoliczbowego
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Wybrane funkcje w gnuplocie
log (10) – logarytm dziesiętny
(o podstawie 10): log 10(13.3)
abs(x) – wartość bezwzględna:
abs(−3)
rand(x) – generator liczb
pseudolosowych z zakresu [0, 1]:
rand(0)
ceil(x) – sufit: ceil(4.23)
cos(x) – kosinus: cos(0.5)
real(x) – część rzeczywista:
real(3, 56)
exp(x) – funkcja wykładnicza: exp(4)
floor (x) – podłoga: floor (−3.56)
imag (x) – a część urojona liczby
zespolonej: imag (3, 2)
sgn(x) – znak liczby (1 dla x > 0,
0 dla x = 0, −1 dla x < 0):
sgn(−3)
int(x) – część całkowita liczby:
int(12.23)
sin(x) – sinus: sin(45)
sqrt(x) – pierwiastek kwadratowy:
sqrt(4)
log (x) – logarytm naturalny
(o podstawie e): log (4.5)
tan(x) – tangens: tan(12.83)
a – liczba zespolona wymagana jako argument
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
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.
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
plot wyrażenie
rysuje wykres podanego wyrażenia (funkcje jednowymiarowe)
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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.
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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).
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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).
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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).
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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)
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
splot sin(x)*cos(y)
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
set pm3d
nakłada teksturę na siatkę
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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)
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
set isosamples 10
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
set isosamples 50
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
set isosamples 100
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
set hidden3d
ukrywa linie wykresu
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
set hidden3d
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
set pm3d map
tworzy mapę (rzut pionowy) wykresu
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
plot x < 5 ? 0.5 ∗ x : sin(x)
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
quit lub exit
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
pwd
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:
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
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
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
shell
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
interaktywnym
Leszek Kłosowicz
Rysunek: Wywołanie skryptu z innego
skryptu
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
reread
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)
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
test terminal | palette
wyświetla informacje o ustawieniach aktualnie używanego terminalu lub palety
Przykład
test palette rgb
test terminal
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)
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
clear
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)
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić
Przykład
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).
Leszek Kłosowicz
gnuplot – czyli jak zrobić wykres, żeby się nie narobić

Podobne dokumenty