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ć