• Nie Znaleziono Wyników

gnuplot czyli jak zrobić wykres, żeby się nie narobić

N/A
N/A
Protected

Academic year: 2021

Share "gnuplot czyli jak zrobić wykres, żeby się nie narobić"

Copied!
70
0
0

Pełen tekst

(1)

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ć

(2)

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

(3)

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ć

(4)

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

(5)

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ć

(6)

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.

(7)

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ć

(8)

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

(9)

∗∗ – 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ć

(10)

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)

(11)

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ć

(12)

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.

(13)

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ć

(14)

plot wyrażenie

rysuje wykres podanego wyrażenia (funkcje jednowymiarowe)

(15)

plot sin(x)

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(16)

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

(17)

plot ’dane.txt’ using 1 : 2

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(18)

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

(19)

plot ’dane.txt’ using 1 : 2 smooth bezier

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(20)

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

(21)

unset mouse plot sin(x )

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(22)

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.

(23)

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ć

(24)

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).

(25)

set xrange [−100 : 100]

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(26)

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

(27)

plot 0.4 ∗ x ∗ ∗3.5 ti ”kreski w gnuplocie”

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(28)

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).

(29)

set xtics −pi , pi /4, pi

set ytics (”nisko” 0, ”wysoko” 1)

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(30)

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

(31)

set label środek at 0, 0

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(32)

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).

(33)

set xlabel ”oś iksów”

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(34)

splot wyrażenie

rysuje wykres podanego wyrażenia (funkcje dwuwymiarowe)

(35)

splot sin(x)*cos(y)

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(36)

set pm3d

nakłada teksturę na siatkę

(37)

set pm3d

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(38)

set isosamples wartość

reguluje jakość wykresu

im większa wartość, tym lepsza jakość (niestety wzrasta, i to znacznie, czas tworzenia wykresu)

(39)

set isosamples 10

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(40)

Przykład

set isosamples 50

(41)

set isosamples 100

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(42)

set hidden3d

ukrywa linie wykresu

(43)

set hidden3d

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(44)

set pm3d map

tworzy mapę (rzut pionowy) wykresu

(45)

set pm3d map

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(46)

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

(47)

set palette rgbformulae 21, 22, 23

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(48)

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

(49)

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ć

(50)

Przykład

plot x < 5 ? 0.5 ∗ x : sin(x )

(51)

kulturalne zamknięcie gnuplota lub przerwanie wykonywania skryptu

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(52)

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

(53)

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ć

(54)

show paramet

wyświetla ustawienia parametru

Przykład

show xrange – wyświetla ustawienie zakresu dla zmiennej x show mouse – wyświetla ustawienie kursora myszki

(55)

wyświetla bieżący katalog roboczy gnuplota

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(56)

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:

(57)

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ć

(58)

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

(59)

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ć

(60)

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

(61)

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ć

(62)

Przykład a = −10 load ’skrypt.txt’

wynikiem wykonania powyższych komend będzie przesuwający się w poziomie wykres funkcji sin(x )

(63)

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ć

(64)

reset

przywraca początkowe wartości wszystkim parametrom gnuplota (nie dotycczy poleceń set term oraz set output)

(65)

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ć

(66)

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)

(67)

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ć

(68)

Przykład

można go umieścić w za pomocą \include{wynik} w tekście LATEX

(69)

po „skompilowaniu” tekstu wykres będzie widoczny w tekście

Leszek Kłosowicz gnuplot – czyli jak zrobić wykres, żeby się nie narobić

(70)

Informacje

Dalsze informacje znajdują się w dokumentacji gnuplota (nieco ponad 200 stron, więc każdy znajdzie coś interesującego).

Cytaty

Powiązane dokumenty

Jeśli jest ciężko, to o tym mówimy, gdy wszystko jest ok, cieszymy się, uśmiechamy szeroko i staramy się czerpać co najlepsze z życia.. Mamy tę niesamowitą okazję by pokazać

Często właściciele gabinetów myślą sobie „przecież moje urządzenia wystarczą”; „po co mi nowe sprzęty (i wydatki), skoro te stare się sprawdzają?”; „stałe klientki

4: (1) Potem widziałem, a oto drzwi były otwarte w niebie, i głos poprzedni, który słyszałem, jakby głos trąby rozmawiającej ze mną, rzekł: Wstąp tutaj, a pokażę ci, co

okładki oklej papierem do scrapbookingu. igły i nitki, przedziurkuj okładkę. yj kolorowych naklejek i papieru do.. Karta pracy do e-Doświadczenia Młodego Naukowca opracowana

• patelnia. Podgrzej na kuchence tak, aby powstała bulocz mieszanka o żółtawym zabarwieniu. Gdy mieszanka jest gotowa pieczenia. Poczekaj, aż masa wystygnie, a nastepnie j połam

Typowa realizacja tego stylu m yślenia przebiega m niej więcej tak: poem at (czyli poeta w swoim poem acie) opisuje ogród, przekazuje jego obraz, ew entualnie w yjaśnia

Oczywiście dla tych, którzy nie mieli szczęścia lub umiejętności po- dejmowania trafnych decyzji dotyczących działania własnego szpitala czy przychodni bądź nie

W rankingu Euro Health Consumer Index (EHCI) 2016, przygotowywanym co roku przez szwedzki think tank Health Consumer Powerhouse i oceniającym po- ziom ochrony zdrowia w