Gnuplot niebanalnie Przewodnik po gnuplocie dla studenta fizyki ...
-
Upload
truongphuc -
Category
Documents
-
view
478 -
download
22
Transcript of Gnuplot niebanalnie Przewodnik po gnuplocie dla studenta fizyki ...
Gnuplot niebanalniePrzewodnik po gnuplocie dla studenta fizyki/matematyki
Rafał Topolnicki
KNF ”Migacz” Uniwersytet Wrocławski
Wrocław, 11 października 2010
Gnuplot niebanalnie Wrocław, 11 października 2010 1 / 68
Plan działania
Plan działania
Wprowadzenie,Rysowanie funkcji matematycznych:
2D - style linii, obramowanie wykresu, skale3D - style siatki, kolorowanie wykresu,równania parametryczne.
Rysowanie danych z plikuzaznaczanie niepewności,algorytmy interpolacyjne,funkcje kolumn,
Fitowanie (dopasowywanie funkcji do danych)Zaawansowane możliwości
tryb multiplot,rysowanie funkcji łączonych/nieciągłych,wizualizacja danych,
Przykłady z życiaWizualizacja modelu ewolucji,Wykresy do posteru ”Projekt Lifter”,Wykresy do referatu o promieniowaniu,
Literatura Gnuplot niebanalnie Wrocław, 11 października 2010 2 / 68
Wstęp
Do czego służy gnuplot
Do rysowania wykresów funkcji 2D i 3Ddanych w jawnym wzorem y(x), z(x, y),danych równaniem parametrycznym (x, y) = (x(t), y(t))(x, y, z) = (x(u, v), y(u, v), z(u, v))
Do rysowania wykresów na podstawie danych pomiarowych (pliku)zaznaczanie danych pomiarowych oraz ich niepewności,znajdowanie krzywej przechodzącej/przybliżającej zebrane dane pomiarowe,dopasowywanie wzoru funkcji do danych pomiarowych (=fitowanie),do wizualizacji danych zmiennych w czasie (z użyciem pliku FIFO)
Do czego gnuplot się nie nadaje
Do obróbki danych i przeprowadzania obliczeń,
Wiele zachodu wymaga rysowanie funkcji ”łączonych” (tj. określonych naprzedziałach innych niż skala wykresu)
Do tworzenia diagramów kołowych, słupkowych itp.
Gnuplot niebanalnie Wrocław, 11 października 2010 3 / 68
Wstęp
Do czego służy gnuplot
Do rysowania wykresów funkcji 2D i 3Ddanych w jawnym wzorem y(x), z(x, y),danych równaniem parametrycznym (x, y) = (x(t), y(t))(x, y, z) = (x(u, v), y(u, v), z(u, v))
Do rysowania wykresów na podstawie danych pomiarowych (pliku)zaznaczanie danych pomiarowych oraz ich niepewności,znajdowanie krzywej przechodzącej/przybliżającej zebrane dane pomiarowe,dopasowywanie wzoru funkcji do danych pomiarowych (=fitowanie),do wizualizacji danych zmiennych w czasie (z użyciem pliku FIFO)
Do czego gnuplot się nie nadaje
Do obróbki danych i przeprowadzania obliczeń,
Wiele zachodu wymaga rysowanie funkcji ”łączonych” (tj. określonych naprzedziałach innych niż skala wykresu)
Do tworzenia diagramów kołowych, słupkowych itp.
Gnuplot niebanalnie Wrocław, 11 października 2010 3 / 68
Wstęp
Dlaczego gnuplot?
Dostępny za darmo,
W przeciwieństwie do Excela możliwość rysowania funkcji matematycznych w2D i 3D,
Ogromne możliwości formatowania wykresów,
Szybki w działaniu,
Używany przez inne oprogramowanie - Maxima, Octave, MPSolve . . .
Dobrze współgra z LATEX’em,
Działa w trybie wsadowym a wykresy możemy zapisywać do plikówgraficznych (.jpg, .png, .bmp, .eps, .pdf)
Paradoksalnie obsługa z wiersza poleceń jest szalenie wygodna.
Gnuplot niebanalnie Wrocław, 11 października 2010 4 / 68
Wstęp
Tryby pracy
Gnuplot może pracować w dwóch trybach
interaktywnym - w terminalu wydajemy kolejne polecenia. Po zamknięciuprogramu tracimy całą pracę. Tylko bardzo proste i krótkie zadania
wsadowym - dowolnym edytorem tekstu piszemy skrypt który wczytujemy dognuplota - znacznie lepsze rozwiązanie
Przejście do trybu wsadowego
Polecenia save i loadsave ’ nowy wykres . gp ’l oad ’ nowy wykres . gp ’
lub bezpośrednio z terminala:[ r a fa l@manhat tan ] $ gnup l o t nowy wykres . gp
Gnuplot niebanalnie Wrocław, 11 października 2010 6 / 68
Wykresy 2D
Wykresy funkcji
Używamy polecenia plot, które można skrócić do pl lub samego pplot sin(x),cos(x)
Gnuplot niebanalnie Wrocław, 11 października 2010 7 / 68
Wykresy 2D
Style linii
Wygląd linii na wykresie jest zdefiniowany przez ich styl. Style są numerowane.Pierwszy styl odpowiada pierwszemu wykresowi, drugi drugiemu itd.s e t s t y l e l i n e <index> {{ l i n e t y p e | l t } < l i n e t y p e > | <c o l o r s p e c >}
{{ l i n e c o l o r | l c } <c o l o r s p e c >}{{ l i n e w i d t h | lw} < l i n e w i d t h >}{{ po i n t t y p e | pt } <po i n t t y p e >}{{ p o i n t s i z e | ps } <p o i n t s i z e >}{{ p o i n t i n t e r v a l | p i } < i n t e r v a l >}{ p a l e t t e }
Zgodnie z powyższym tworzymy nowe style:gnup lot> s e t s t y l e l i n e 1 l c rgb ’ b l u e ’ lw 2gnup lot> s e t s t y l e l i n e 2 l c rgb ’#f f 0 606 ’ lw 1gnup lot> show s t y l e l i n el i n e s t y l e 1 , l i n e t y p e 1 l i n e c o l o r 0 l i n ew i d t h 2 .000. . . p o i n t t y p e 1 p o i n t s i z e d e f a u l t p o i n t i n t e r v a l 0l i n e s t y l e 2 , l i n e t y p e 2 l i n e c o l o r 0 l i n ew i d t h 1 .000. . . p o i n t t y p e 2 p o i n t s i z e d e f a u l t p o i n t i n t e r v a l 0
Polecenie show style line prezentuje obecnie używane style. Rysowanie linii zużyciem stylu 1 i 2p l o t s i n ( x ) l s 1 , cos ( x ) l s 2
Gnuplot niebanalnie Wrocław, 11 października 2010 8 / 68
Wykresy 2D
Wygląd linii - kolory, grubość
Domyśle kolory wykresów przedstawiono poniżej:
lc lc lc
1 4 7
2 5 8
3 6 9
Można również używać nazw: ’blue’, ’red, ’orange’, ’sea-blue’ . . .lub podać kod heksadecymalny koloru: ’#ff0606’, ’#989898’, ’#fdc938’ . . .p [ 0 : 3 0 ] exp (−0.1∗ x )∗ cos ( x ) , exp (−0.1∗ x ) l c 7 ,
−exp (−0.1∗ x ) rgb l c ’ b l a c k ’
Gnuplot niebanalnie Wrocław, 11 października 2010 9 / 68
Wykresy 2D
Typy linii
Mamy do dyspozycji kilka typów linii, które wybieramy po słowie kluczowym with
lines - rysowanie za pomocą ciągłej liniipoints - rysowanie jedynie punktówpt - typ punktów
ps - wielkość punktów
dots - rysowanie za pomocą kropek - użyteczne przy wykresach 3D
linespoints - punkty łączone linią. Wygląd punktów i linii definiujemyosobno, tak jak dla points i lines
Gnuplot niebanalnie Wrocław, 11 października 2010 10 / 68
Wykresy 2D
Typy linii - przykład
p [− p i : p i ] [ −1 : 1 ] s i n ( x ) w po i n t s ps 2 pt 2 l c 8 ,cos ( x ) w p ps 1 pt 7 l c 2 ,2/ p i ∗∗2∗ x∗∗2−1 w l i n e s p o i n t s lw 2 pt 5 ps 0 .5 l c 1
Gnuplot niebanalnie Wrocław, 11 października 2010 11 / 68
Wykresy 2D
Typy linii - egzotyka
W uzasadnionych wypadkach mamy do dyspozycji również:
p sin(x) w impulses p sin(x) w steps
p sin(x) w boxes p sin(x) w filledcurves
Gnuplot niebanalnie Wrocław, 11 października 2010 12 / 68
Wykresy 2D
Osie i obramowanie
Dodanie siatki - set grid
Dodanie osi OX - set xzeroaxis
Dodanie osi OY - set yzeroaxis
s e t g r i ds e t x z e r o a x i s l t 1 l c ’ b l a c k ’s e t y z e r o a x i s l t 1 l c ’ b l a c k ’p atan ( x )∗ exp(−abs ( x ) ) lw 2
Gnuplot niebanalnie Wrocław, 11 października 2010 13 / 68
Wykresy 2D
Osie i obramowanieObramowanie wykresu ustalamy za pomocą set border n
Aby usunąć skalę z górnego i prawego obramowanie wydajemy odpowiedniopolecenie set xtics nomirror, set xtics nomirror
s e t x t i c s nom i r r o rs e t y t i c s nom i r r o rs e t border 3p [ −1 :1 ] a s i n ( x ) lw 2
Gnuplot niebanalnie Wrocław, 11 października 2010 14 / 68
Wykresy 2D
ZakresDomyślnie wykresy y = f(x) rysowana są w zakresie x ∈ [−10, 10],y ∈ maxx(f(x)).
Ograniczenie argumentów do x ∈ [−π, π]p [− p i : p i ] s i n ( x )
Argumenty z góry ograniczone przez π z dołu przez domyślą wartośćp [ : p i ] s i n ( x )
Ograniczenie argumentów oraz wartości funkcjip [− p i : p i ] [ −1 : 1 ] s i n ( x ) , x∗∗2
Można też z góry narzucić zakres osi:s e t xrange [− p i : p i ]s e t yrange [ −1 :1 ]
Gnuplot niebanalnie Wrocław, 11 października 2010 15 / 68
Wykresy 2D
PodziałkaMożemy wymusić stosowanie podziałki na każdej z osi osobno: set xtics, setytics, set ztics, set x2tics . . .
Wymuszenie konkretnych wartościz listy
s e t x t i c s (1 ,2 , 4 , 8 , 16 ,32 ,64 ,128 ,256 ,512 ,1024)
co 0.75 od 0 do 3.75
s e t x t i c s 0 , 0 . 7 5 , 3 . 7 5
co 0.5 z wyróżnieniem π
s e t x t i c s 0 , . 5 , 10s e t x t i c s add ( ”Pi ” 3 .14159)
Wymuszenie konkretnych nazw:s e t x t i c s ( ” brak ” 0 , ”1/4” 0 . 25 , ” polowa” 0 . 5 , ”3/4” 0 . 75 , ” c a l o s c ” 1)
Gnuplot niebanalnie Wrocław, 11 października 2010 16 / 68
Wykresy 2D
Podwójne osie
s e t xrange [ 0 : 2 ∗ p i ]s e t yrange [ −1 :1 ]s e t y2range [ 0 : 1 ]p s i n ( x ) a x i s x1y1 ,s i n ( x )∗∗2 a x i s x1y2
s e t xrange [ 0 : 2 ∗ p i ]s e t yrange [ −1 :1 ]s e t y2range [ 0 : 1 ]s e t y 2 t i c s 0 , 0 . 2s e t y t i c s nom i r r o rp s i n ( x ) a x i s x1y1 ,s i n ( x )∗∗2 a x i s x1y2
Gnuplot niebanalnie Wrocław, 11 października 2010 17 / 68
Wykresy 2D
Etykiety
Tytuł obrazu: set title "Tytul Wykresu"
Tytuł osi OX: set xlabel "OX"
Tytuł osi OY: set ylabel "OX"
Nazwa wykresu: title "Tytul"
Domyślny krój czcionki nie jest zbyt atrakcyjny. Możemy to łatwo zmienić.s e t t i t l e ”Wykres” f on t ” He l v e t i c a , 15 ”s e t x l a b e l ”Czas ” f o n t ”Times− I t a l i c , 14 ”s e t y l a b e l ” S t e z e n i e ” f on t ” A r i a l−Bold , 13 ”p [ 0 : ] exp (−0.8∗ x ) t i t l e ”Probka 1”
Gnuplot niebanalnie Wrocław, 11 października 2010 18 / 68
Wykresy 3D
Polecenie splot
Wykresy 3D tzn: R× R→ R tworzymy za pomocą polecenia splot. Konstrukcjaw pełni analogiczna do wykresów 2D.
s p l o t x∗∗2+y∗∗2s e t i s o samp l e s 35sp exp (−0.2∗ s q r t ( x∗∗2+y ∗∗2))∗ s i n ( s q r t ( x∗∗2+y ∗∗2))
Gnuplot niebanalnie Wrocław, 11 października 2010 19 / 68
Wykresy 3D
Zmienne isosamples hidden3d
isosamples to zmienna odpowiadająca za gęstość siatki - im większawartość tym wykres jest dokładniejszy a jego rysowanie wolniejsze
po wydaniu polecenia set hidden3d powierzchnia przestaje być przezroczysta
s e t hidden3d unse t hidden3d
Gnuplot niebanalnie Wrocław, 11 października 2010 20 / 68
Wykresy 3D
Zmienna pm3d
pm3d odpowiada za kolorowanie wykresów 3D i 4D. W zależności od ustawieniahidden3d na powierzchni jest rysowana siatka.
s e t hidden3dse t pm3dsp . .
un se t hidden3dse t pm3dsp . .
Gnuplot niebanalnie Wrocław, 11 października 2010 21 / 68
Wykresy 3D
Wpływ isosamplesisosamples 20 isosamples 50
isosamples 100 isosamples 200
Gnuplot niebanalnie Wrocław, 11 października 2010 22 / 68
Wykresy 3D
Zmiana palety - set palette rgbformulae
Zmiana palety umożliwia zmianę sposobu kolorowania wykresu.s e t p a l e t t e r gb f o rmu l a e N1 ,N2 ,N3
Liczby całkowite N1,N2,N3 to numery funkcji odwzorowujących wartość funkcji wskładowe w kodzie RGB koloru. Aby zobaczyć spis funkcjignup lot> show p a l e t t e r gb f o rmu l a e
∗ t h e r e a r e 37 a v a i l a b l e rgb c o l o r mapping f o rmu lae :0 : 0 1 : 0 . 5 2 : 13 : x 4 : xˆ2 5 : xˆ36 : xˆ4 7 : s q r t ( x ) 8 : s q r t ( s q r t ( x ) )
. . . .
Gdy wiemy w jakim przedziale są wartości funkcji możemy użyć konstrukcjis e t p a l e t t e d e f i n e d (−1 ” b l a c k ” , 0 ” b l u e ” , 1 ” red ” )
Gnuplot niebanalnie Wrocław, 11 października 2010 23 / 68
Wykresy 3D
Porównanie palet
s e t p a l e t t e d e f i n e d(−0.4 ” b l u e ” ,0 ” g reen ” , 0 . 8 ” red ” )
r gb f o rmu l a e 10 ,13 ,9
r gb f o rmu l a e 21 ,3 ,0 r gb f o rmu l a e 23 ,28 ,3
Gnuplot niebanalnie Wrocław, 11 października 2010 24 / 68
Wykresy 3D
Kontury=poziomice
Zaznaczanie konturóws e t contour
Opcje:
baseKontury jedynie na płaszczyźnie XYs e t contour basesp . . . .
surfaceKontury jedynie na powierzchniwykresus e t contour s u r f a c ese t hidden3dsp . . . .
bothKontury na płaszczyźnie XY oraz nawykresies e t contour bothsp . . . .
Gnuplot niebanalnie Wrocław, 11 października 2010 25 / 68
Wykresy 3D
Kontury=poziomice
Zaznaczanie konturóws e t contour
Opcje:
baseKontury jedynie na płaszczyźnie XYs e t contour basesp . . . .
surfaceKontury jedynie na powierzchniwykresus e t contour s u r f a c ese t hidden3dsp . . . .
bothKontury na płaszczyźnie XY oraz nawykresies e t contour bothsp . . . .
Gnuplot niebanalnie Wrocław, 11 października 2010 25 / 68
Wykresy 3D
Kontury=poziomice
Zaznaczanie konturóws e t contour
Opcje:
baseKontury jedynie na płaszczyźnie XYs e t contour basesp . . . .
surfaceKontury jedynie na powierzchniwykresus e t contour s u r f a c ese t hidden3dsp . . . .
bothKontury na płaszczyźnie XY oraz nawykresies e t contour bothsp . . . .
Gnuplot niebanalnie Wrocław, 11 października 2010 25 / 68
Wykresy 3D
Kontury=poziomice
1 Narysowanie 10 konturów równoodległychs e t cntrparam l e v e l s 11
2 Narysowanie konturów odległych o żądaną wartośćs e t cntrparam l e v e l s i n c r emen t a l −1, 0 . 25 , 1
3 Wymuszenie położenia konturóws e t cntrparam l e v e l s d i s c r e t e −0.25 , −0.5 , 0 , 0 . 2 , 0 . 5 , 0 . 8
Gnuplot niebanalnie Wrocław, 11 października 2010 26 / 68
Wykresy 3D
Widok - set view
Polecenie set view umożliwia zmianęorientacji wykresu 3D.s e t view ro tx , r o t zs e t view equa l { xy | xyz }
Domyśle wartości rotx, roty zależą odterminala - 60,30 dla wxt i 0,0 dla x11.
s e t view 0 ,0 s e t view 60 ,15 s e t view 30 ,15
Gnuplot niebanalnie Wrocław, 11 października 2010 27 / 68
Funkcje parametryczne
Równania parametryczne
Wykresy funkcji postaci x = x(t), y = y(t), x = x(u, v), y = y(u, v), z = z(u, v)możemy rysować przechodząc do trybu parametrycznegos e t pa ramet r i c
dummy v a r i a b l e i s t f o r cu rve s , u/v f o r s u r f a c e s
s e t pa ramet r i c
dummy v a r i a b l e i s t f o r cu rve s , u/v f o r s u r f a c e ss e t s i z e r a t i o 1s e t xrange [ −1 :1 ]s e t yrange [ −1 :1 ]p l o t [ 0 : 2 ∗ p i ] s i n ( t ) , cos ( t )
Gnuplot niebanalnie Wrocław, 11 października 2010 28 / 68
Funkcje parametryczne
Równania parametryczne
Wykresy funkcji postaci x = x(t), y = y(t), x = x(u, v), y = y(u, v), z = z(u, v)możemy rysować przechodząc do trybu parametrycznegos e t pa ramet r i c
dummy v a r i a b l e i s t f o r cu rve s , u/v f o r s u r f a c e s
Parametr t zmienia się w sposób skokowy awielkość skoku zdefiniowana jest przez zmiennasamples (domyślna wartość 100). Jeśli chcemynarysować N -kąt foremny wystarczyset samples N+1
s e t pa ramet r i c
dummy v a r i a b l e i s t f o r cu rve s , u/v f o r s u r f a c e ss e t s i z e r a t i o 1s e t xrange [ −1 :1 ]s e t yrange [ −1 :1 ]s e t samples 7p l o t [ 0 : 2 ∗ p i ] s i n ( t ) , cos ( t )
Gnuplot niebanalnie Wrocław, 11 października 2010 28 / 68
Funkcje parametryczne
Spirala
(x, y)(t) = (r(t) cos(t), r(t) sin(t))
spirala r(t) = const
kardioida r(t) = C (1 + cost)
s e t xrange [−10∗ p i : 10∗ p i ]s e t yrange [−10∗ p i : 10∗ p i ]s e t samples 200p l o t [ 0 : 1 0∗ p i ] t ∗ s i n ( t ) , t ∗ cos ( t )
Cykloida
(x, y) = (r(t− sin t), r(1− cos t))
s e t xrange [−2∗ p i : 2∗ p i ]s e t yrange [ 0 : 2 ]s e t samples 200unse t keyr=1p [−2∗ p i : 2∗ p i ] r ∗( t−s i n ( t ) ) , r ∗(1− cos ( t ) )
Gnuplot niebanalnie Wrocław, 11 października 2010 29 / 68
Funkcje parametryczne
Spirala
(x, y)(t) = (r(t) cos(t), r(t) sin(t))
spirala r(t) = const
kardioida r(t) = C (1 + cost)
s e t xrange [−10∗ p i : 10∗ p i ]s e t yrange [−10∗ p i : 10∗ p i ]s e t samples 200p l o t [ 0 : 1 0∗ p i ] t ∗ s i n ( t ) , t ∗ cos ( t )
Cykloida
(x, y) = (r(t− sin t), r(1− cos t))
s e t xrange [−2∗ p i : 2∗ p i ]s e t yrange [ 0 : 2 ]s e t samples 200unse t keyr=1p [−2∗ p i : 2∗ p i ] r ∗( t−s i n ( t ) ) , r ∗(1− cos ( t ) )
Gnuplot niebanalnie Wrocław, 11 października 2010 29 / 68
Funkcje parametryczne
Sfera
(x, y, z) = r (cosu cos v, sinu cos v, sin v)
s e t nokeys e t pa ramet r i cs e t hidden3dse t i s o samp l e s 30 ,20s e t t i c s l e v e l 0s e t xrange [−1.2 : 1 . 2 ]s e t yrange [−1.2 : 1 . 2 ]s e t zrange [−1 : 1 ]s p l o t [− p i : p i ][− p i /2 : p i /2 ] cos ( u )∗ cos ( v ) ,
s i n ( u )∗ cos ( v ) , s i n ( v )
Użycie set ticslevel 0 powoduje usunięcieprzerwy między powierzchnią wykresu apłaszczyzną XY.
Gnuplot niebanalnie Wrocław, 11 października 2010 30 / 68
Funkcje parametryczne
Torus
s e t nokeys e t pa ramet r i cs e t hidden3dse t pm3ds e t view 30s e t i s o samp l e s 60 ,60s e t yrange [ −1 :1 ]s p l o t [− p i : p i ][− p i : p i ] cos ( u )∗ ( cos ( v )+3) ,
0 .3∗ s i n ( v ) , s i n ( u )∗ ( cos ( v )+3)
Gnuplot niebanalnie Wrocław, 11 października 2010 31 / 68
Funkcje parametryczne
Muszla
s e t nokeys e t noborde rs e t n o x t i c ss e t n o y t i c ss e t n o z t i c ss e t pa ramet r i cs e t hidden3dse t view 90 ,330 ,1 , 1 . 3s e t i s o samp l e s 300 ,30s p l o t [ 0 : 1 3∗ p i ][− p i : p i ]
u∗ cos ( u )∗ ( cos ( v )+1) ,u∗ s i n ( u )∗ ( cos ( v )+1) ,u∗ s i n ( v ) − ( ( u+3)/8∗ p i )∗∗2 − 20
Gnuplot niebanalnie Wrocław, 11 października 2010 32 / 68
Dane z pliku
Struktura pliku
Gnuplot został stworzony jako narzędzie do obróbki i prezentowania danychpomiarowych. Plik z którego pobieramy dane powinien składać się z kolumnrozdzielonych spacjami lub tabulatorami (domyślnie).W zapisie dziesiętnym używamy . (kropki) a nie , (przecinka)Przykład pliku:#UH diod1 d iod2 d iod3 d iod4 d iod50 .0036 1 .9 3 .0 1 .7 0 .5 0 .4−0.0643 1 .7 2 .7 1 .5 0 .4 0 .2−0.0908 1 .6 2 .5 1 .3 0 .3 0 .2−0.1559 1 .4 2 .1 1 .1 0 .2 0 .1−0.2016 1 .2 1 .9 0 .9 0 .1 0 .0. . . .
Gnuplot niebanalnie Wrocław, 11 października 2010 33 / 68
Dane z pliku
Wybór kolumny
Do rysowania wykresów na podstawie danych z pliku używamy polecenia plotpodając następnie nazwę pliku a po using wybrane kolumnyp l o t ’ dane . t x t ’ us ing 1 : 2 , ’ dane . t x t ’ us ing 1 :3 w l i n e s
polecenie using można skrócić do samego u
Łączenie punktów
Dodanie w lines łączy punkty łamaną. Aby połączyć je gładką krzywą używamysmooth a następnie jeden z możliwych algorytmów (→ patrz ? smooth)
Używany plik
1 1 .1 0 .1 0 .12 2 .0 0 .13 0 .083 1 .4 0 .04 0 .124 1 .7 0 .11 0 .15 0 .8 0 .5 0 .036 1 .0 0 .3 0 .17 1 .5 0 .31 0 .118 2 .1 0 .55 0 .6
Gnuplot niebanalnie Wrocław, 11 października 2010 34 / 68
Dane z pliku
Wybór kolumny
Do rysowania wykresów na podstawie danych z pliku używamy polecenia plotpodając następnie nazwę pliku a po using wybrane kolumnyp l o t ’ dane . t x t ’ us ing 1 : 2 , ’ dane . t x t ’ us ing 1 :3 w l i n e s
polecenie using można skrócić do samego u
Łączenie punktów
Dodanie w lines łączy punkty łamaną. Aby połączyć je gładką krzywą używamysmooth a następnie jeden z możliwych algorytmów (→ patrz ? smooth)
Używany plik
1 1 .1 0 .1 0 .12 2 .0 0 .13 0 .083 1 .4 0 .04 0 .124 1 .7 0 .11 0 .15 0 .8 0 .5 0 .036 1 .0 0 .3 0 .17 1 .5 0 .31 0 .118 2 .1 0 .55 0 .6
Gnuplot niebanalnie Wrocław, 11 października 2010 34 / 68
Dane z pliku
Dane z pliku - pierwsze starcie
Jedynie punkty punkty z plikup ’ dane . t x t ’ u 1 : 2
Punkty połączone łamanąp ’ dane . t x t ’ u 1 : 2 w l i n e s
Punkty i łamanap ’ dane . t x t ’ w p pt 7 ps 1 . 2 , ’ dane . t x t ’ w l
Gnuplot niebanalnie Wrocław, 11 października 2010 35 / 68
Dane z pliku
Rysowanie niepewności
p l o t ’ dane . t x t ’ 1 : 2 : 3 : 4 w x y e r r o r b a r s
Możliwe sposoby podawania wartości niepewności
w xerrorbars (albo yerrorbars)( x , y , Dx)( x , y , xlow , xh igh )
w xyerrorbars
( x , y , Dx , Dy)( x , y , xlow , xh igh , ylow , yh igh )
p ’ dane ’ u 1 : 2 : 3 w x e r r o r b a r slw 1 . 2 , ’ krzywa . t x t ’ w l
p ’ dane ’ u 1 : 2 : 3 : 4 w x y e r r o r b a r slw 1 . 2 , ’ krzywa . t x t ’ w l
Gnuplot niebanalnie Wrocław, 11 października 2010 36 / 68
Dane z pliku
Rysowanie niepewności
p l o t ’ dane . t x t ’ 1 : 2 : 3 : 4 w x y e r r o r b a r s
Możliwe sposoby podawania wartości niepewności
w xerrorbars (albo yerrorbars)( x , y , Dx)( x , y , xlow , xh igh )
w xyerrorbars
( x , y , Dx , Dy)( x , y , xlow , xh igh , ylow , yh igh )
p ’ dane ’ u 1 : 2 : 3 w x e r r o r b a r slw 1 . 2 , ’ krzywa . t x t ’ w l
p ’ dane ’ u 1 : 2 : 3 : 4 w x y e r r o r b a r slw 1 . 2 , ’ krzywa . t x t ’ w l
Gnuplot niebanalnie Wrocław, 11 października 2010 36 / 68
Dane z pliku
Interpolacja
Gnuplot posiada szereg algorytmów interpolacyjnych służących do rysowaniakrzywych przybliżających punkty pomiarowe. Do wygładzania używamy argumentusmooth, podając następnie nazwę algorytmu (np. acsplines, csplines,bezier), polecenia plot
Wygładzanie linii - krzywe Beziera
(x, y) =
(n∑i=0
xiBni (t),
n∑i=0
yiBni (t)
)Bni (t) - wielomiany Bernsteina
p ’ krzywa . t x t ’ w p pt 7 ps 1 . 2 ,’ krzywa . t x t ’ smooth b e z i e r
Gnuplot niebanalnie Wrocław, 11 października 2010 37 / 68
Dane z pliku
Interpolacja
Gnuplot posiada szereg algorytmów interpolacyjnych służących do rysowaniakrzywych przybliżających punkty pomiarowe. Do wygładzania używamy argumentusmooth, podając następnie nazwę algorytmu (np. acsplines, csplines,bezier), polecenia plot
Wygładzanie linii - krzywe Beziera
(x, y) =
(n∑i=0
xiBni (t),
n∑i=0
yiBni (t)
)Bni (t) - wielomiany Bernsteina
p ’ krzywa . t x t ’ w p pt 7 ps 1 . 2 ,’ krzywa . t x t ’ smooth b e z i e r
Gnuplot niebanalnie Wrocław, 11 października 2010 37 / 68
Dane z pliku
Interpolacja - krzywe Beziera
Problem - co stanie się gdy dane w pliku nie będą ustawione rosnąco względemargumentu (tj. pierwszej kolumny)? Zamieniamy miejscami w naszym pliku linie 4i 5.
”niepoprawna” krzywap ’ dane ’ smooth b e z i e r
”poprawna” krzywap ’ dane ’ smooth s b e z i e r
użycie sbezier zamiast bezierzmusza gnuplota do wcześniejszegoposortowania pliku
Gnuplot niebanalnie Wrocław, 11 października 2010 38 / 68
Dane z pliku
Interpolacja - algorytm csplines
csplines prowadzi krzywą przechodzącą przez wszystkie punkty pomiarowe.Nie mamy wpływu na jej kształt. Gnuplot sam sortuje dane z pliku.
p ’ krzywa . t x t ’ w p pt 7 ps 1 . 2 ,’ krzywa . t x t ’ smooth s p l i n e s
Gnuplot niebanalnie Wrocław, 11 października 2010 39 / 68
Dane z pliku
Interpolacja - algorytm acsplines
O wygładzeniu krzywej decyduje parametr - im większa jest jego wartość tymkrzywa ’dokładniej’ przechodzi przez punkty. W granicy →∞ otrzymujemycsplines
using 1:2:(10) - parametr =10 dla wszystkich punktów
using 1:2:3 - paramter brany z 3 kolumny
using 1:2:($3**2+1) - parametr równy kwadratowi liczby z trzeciejkolumny +1
dowolna funkcja trzeciej kolumnys ( x , p)=1/( x∗x∗p )p ’ dane ’ u 1 : 2 : ( s ( $3 , 1 ) ) smooth a c s p l i n e s
Gnuplot niebanalnie Wrocław, 11 października 2010 40 / 68
Dane z pliku
Interpolacja - algorytm acsplines
p ’ krzywa . t x t ’ w p pt 7 ps 1 .2 n o t i t l e ,’ krzywa . t x t ’ smooth b e z i e r t i t l e ” b e z i e r ” ,’ krzywa . t x t ’ u 1 : 2 : ( 1 ) smooth a c s p l i n e s t i t l e ”1” ,’ krzywa . t x t ’ u 1 : 2 : ( 1 0 ) smooth a c s p l i n e s t i t l e ”10” ,’ krzywa . t x t ’ u 1 : 2 : ( 1 0 0 ) smooth a c s p l i n e s t i t l e ”100” ,’ krzywa . t x t ’ u 1 : 2 : ( 1 0 0 0 ) smooth a c s p l i n e s t i t l e ”1000” ,’ krzywa . t x t ’ u 1 : 2 : ( 1 00000 ) smooth a c s p l i n e s t i t l e ”100000”
Gnuplot niebanalnie Wrocław, 11 października 2010 41 / 68
Dane z pliku
Interpolacja - algorytm acsplines
s ( x , p)=1/( x∗x∗p )u ( x , p)=1/ l og ( x∗p+1)p ’ krzywa . t x t ’ w p pt 7 ps 1 .2 n o t i t l e ,’ krzywa . t x t ’ u 1 : 2 : ( s ( $3 , 1 ) ) smooth a c s p l i n e s t i t l e ” s ( x , 1 ) ” ,’ krzywa . t x t ’ u 1 : 2 : ( s ( $3 , 0 . 1 ) ) smooth a c s p l i n e s t i t l e ” s ( x , 0 . 1 ) ” ,’ krzywa . t x t ’ u 1 : 2 : ( u ( $3 , 0 . 1 ) ) smooth a c s p l i n e s t i t l e ”u ( x , 0 . 1 ) ”
Gnuplot niebanalnie Wrocław, 11 października 2010 42 / 68
Dane z pliku
Skala logarytmiczna
set logscale x - oś OX w skalilogarytmicznej
set logscale y - oś OY w skalilogarytmicznej
set logscale y - wykres w skalilog(x),log(y)
s e t l o g s c a l e xyp ’ l aw i n y . t x t ’ u 1 : 2
Zmienne i własne funkcjeZmienne:gnup lot> a=p i /exp (1 )gnup lot> b=5gnup lot> pr a+b6.15572734979092gnup lot> p a∗x+b
Funkcje:gnup lot> f ( x , y)=a∗exp ( x+y )gnup lot> pr f ( 0 , 1 )3.14159265358979gnup lot> w( x , a , b)=a∗x∗∗3+b∗x∗∗2gnup lot> p w( x ,1 ,−1)
Gnuplot niebanalnie Wrocław, 11 października 2010 43 / 68
Dane z pliku
Funkcje kolumn
Przyjmujemy następującą strukturę pliku z danymi:x y z u ( x ) u ( y ) u ( z )
using 1:2:(1.1) trzecia kolumna ma stałą wartość 1,1 niezależnie od pliku(np. stała wartość xerrorbars)
using 1:(log($2)) narysowanie wykresu w skali pół logarytmicznej
us ing 1 : 2 : ( $1−Dx1 ) : ( $1+Dx2 ) : ( $2−Dy1 ) : ( $2+Dy2) w x y e r r o r b a r s
rysowanie niepewności stałej dla wszystkich punktów ale różnej w ”górę” i”dół”
us ing f 1 ( $1 , $2 , . . . , C1 ) : f 2 ( $1 , $2 , . . . , C2 ) : . . . : f n ( $1 , $2 , . . . , Cn)
gdzie fi to dowolna funkcja kolumn a C1 to dowolna stała.
Gnuplot niebanalnie Wrocław, 11 października 2010 44 / 68
Fitowanie
FitowanieFitowanie - dopasowywanie funkcji do danych pomiarowych Schemat działania:
1 Zgadujemy wzór funkcji, która opisuje dane pomiarowef ( x)=a∗x+b
Powyższa funkcja zależy od dwóch parametrów a i b
2 Fitujemy:f i t f ( x ) ’ wyn i k i . dat ’ u 2 : 3 v i a a , b
Gnuplot używa metody najmniejszych kwadratów (algorytm Marquardta-Levenberga). Znalezione wartości parametrów zostają do nich przypisane
3 Rysujemy:
p ’ wyn i k i . dat ’ u 2 : 3 , f ( x )
Ćwiczenie nr 57, I pracownia −→
Gnuplot niebanalnie Wrocław, 11 października 2010 45 / 68
Fitowanie
FitowanieFitowanie - dopasowywanie funkcji do danych pomiarowych Schemat działania:
1 Zgadujemy wzór funkcji, która opisuje dane pomiarowef ( x)=a∗x+b
Powyższa funkcja zależy od dwóch parametrów a i b
2 Fitujemy:f i t f ( x ) ’ wyn i k i . dat ’ u 2 : 3 v i a a , b
Gnuplot używa metody najmniejszych kwadratów (algorytm Marquardta-Levenberga). Znalezione wartości parametrów zostają do nich przypisane
3 Rysujemy:
p ’ wyn i k i . dat ’ u 2 : 3 , f ( x )
Ćwiczenie nr 57, I pracownia −→
Gnuplot niebanalnie Wrocław, 11 października 2010 45 / 68
Fitowanie
FitowanieFitowanie - dopasowywanie funkcji do danych pomiarowych Schemat działania:
1 Zgadujemy wzór funkcji, która opisuje dane pomiarowef ( x)=a∗x+b
Powyższa funkcja zależy od dwóch parametrów a i b
2 Fitujemy:f i t f ( x ) ’ wyn i k i . dat ’ u 2 : 3 v i a a , b
Gnuplot używa metody najmniejszych kwadratów (algorytm Marquardta-Levenberga). Znalezione wartości parametrów zostają do nich przypisane
3 Rysujemy:
p ’ wyn i k i . dat ’ u 2 : 3 , f ( x )
Ćwiczenie nr 57, I pracownia −→
Gnuplot niebanalnie Wrocław, 11 października 2010 45 / 68
Fitowanie
Wynik polecenia fit
Znalezione wartościwszystkich parametróworaz ich niepewności.Wynik możemy uznać,za wiarygodny gdy ”naoko” dobrze przybliżadane pomiarowe orazgdy niepewności(Asymptotic StandardError) są <15 %
Gnuplot niebanalnie Wrocław, 11 października 2010 46 / 68
Fitowanie
Wynik polecenia fit
Final sum of squares:
WSSR =N∑i=1
(yi−f(xi))2
Wariancja:
V =1NWSSR
Dla obu parametrów immniejsza wartość, tymlepsze dopasowanie.
Gnuplot niebanalnie Wrocław, 11 października 2010 46 / 68
Fitowanie
Wynik polecenia fit
NDF=N-parametry
Gnuplot niebanalnie Wrocław, 11 października 2010 46 / 68
Fitowanie
Przykład - doświadczenie Cavendisha1
Spodziewamy się, że dane pomiarowe można przybliżyć funkcją:
θ(t) = θ0 + a exp(−t
τ) sin(
2πtT+ φ)
a - amplituda oscylacjiφ - początkowa faza
τ - szybkość zanikuT - okres oscylacji
θ0 - początkoweprzesunięcie
Aby znalezienie parametrów a, φ, τ, T, θ0było możliwe musimy zasugerować ichwartości. Np:
a = 40
τ = 15
φ = −0, 5
T = 15
θ = 10
1Dane pomiarowe z strony [3]Gnuplot niebanalnie Wrocław, 11 października 2010 47 / 68
Fitowanie
Przykład - doświadczenie Cavendisha1
th e t a ( t ) = the ta0 + a∗exp(− t / tau )∗ s i n (2∗ p i ∗ t /T + ph i )a = 40tau = 15ph i = −0.5T = 15the ta0 = 10f i t t h e t a ( x ) ” ca v end i s h . data ” us ing 1 : 2 : 3 v i a a , tau , phi , T, th e t a0p l o t [ : ] [ − 4 0 : 5 0 ] ” c a v end i s h . data ” with y e r r o r b a r s , t h e t a ( x ) lw 2
Aby znalezienie parametrów a, φ, τ, T, θ0było możliwe musimy zasugerować ichwartości. Np:
a = 40
τ = 15
φ = −0, 5
T = 15
θ = 10
1Dane pomiarowe z strony [3]Gnuplot niebanalnie Wrocław, 11 października 2010 47 / 68
Fitowanie
Wagi
f(x) = (x+ 3, 14)(1 + rand()−0,510
)g(x) = (x+ 5, 50)
(1 + rand()−0,510
)Niepewności wartości obu funkcji sąróżne
u(f(xi)) = 0, 5 ; u(g(xi)) = 5
Waga danego punktu wi = 1u(f(xi))2
fitowanie bez wag - linia zielona fit(x)f i t ( x)=a1∗x+b1f i t f i t ( x ) ’ p l i k ’ u 1 : 2 v i a a1 , b1
fitowanie z wagami - linia niebieska wfit(x)w f i t ( x)=a2∗x+b2f i t w f i t ( x ) ’ p l i k ’ u 1 : 2 : 3 v i a a2 , b2
Gnuplot niebanalnie Wrocław, 11 października 2010 48 / 68
Zaawansowane możliwości
Tryb multiplot
Tryb multiplot umożliwia rysowanie kilku wykresów (o różnych typach iparametrach) na jednym płótnie.
gnup lot> s e t mu l t i p l o tmu l t i p l o t> unse t keymu l t i p l o t> p [− p i : p i ] s i n ( x ) lw 2mu l t i p l o t> s e t samples 5mu l t i p l o t> p [− p i : p i ] s i n ( x ) l c 2 lw 2mu l t i p l o t> s e t pa ramet r i cmu l t i p l o t> s e t samples 200mu l t i p l o t> p s i n (2∗ t ) , cos (3∗ t ) l c 3 lw 2
Gnuplot niebanalnie Wrocław, 11 października 2010 49 / 68
Zaawansowane możliwości
Tryb multiplot
set rmargin 0 - brak prawego marginesu
set size square 0.3 - osie wykresów 2Dw równych proporcjach, wielkość wykresu0.3 całego płótna
set origin 0.1,0.1 - położenie wykresuna płótnie
s e t n o x t i cs e t n o y t i cs e t n o z t i cs e t nokeys e t rmarg in 0s e t lma rg i n 0s e t samples 100s e t mu l t i p l o ts e t s i z e squa r e 0 .3s e t o r i g i n 0 . 1 , 0 . 1p x∗∗2s e t pa ramet r i cs e t o r i g i n 0 . 1 , 0 . 5p s i n (3∗ t ) , cos (4∗ t )un se t paramet r i cs e t i s o samp l e s 100 ,100s e t s i z e 0 . 5 , 1 . 0s e t o r i g i n 0.35 ,−0.05s e t t i c s l e v e l 0s e t pm3ds e t hidden3dsp [− p i /2 : p i /2][− p i /2 : p i /2 ]( x∗∗2+y ∗∗2)∗ cos ( x∗∗2+y ∗∗2)
Gnuplot niebanalnie Wrocław, 11 października 2010 50 / 68
Zaawansowane możliwości
Sensowne zastosowanie multiplot
gnup lot> s e t mu l t i p l o tmu l t i p l o t> unse t keymu l t i p l o t> p [− p i : p i ] s i n ( x ) lw 2mu l t i p l o t> s e t samples 5mu l t i p l o t> p [− p i : p i ] s i n ( x ) l c 2 lw 2mu l t i p l o t> s e t pa ramet r i cmu l t i p l o t> s e t samples 200mu l t i p l o t> p s i n (2∗ t ) , cos (3∗ t ) l c 3 lw 2
Gnuplot niebanalnie Wrocław, 11 października 2010 51 / 68
Zaawansowane możliwości
Rysowanie wykresów łączonych
Problem: Chcemy narysować funkcję nieciągłą określoną na rozłącznychprzedziałach
f(x) ={0 dla x < 01 dla x 0
Konstrukcja warunkowa:f ( x ) = ( warunek1 ) ? i n s t r u k c j a 1 :
( warunek2 ) ? i n s t r u k c j a 2 :i n t r u k c j a 3
ifelse ifelse
f ( x )=(x<0) ? 0 : 1p [ −1 : 1 ] [ −0 . 1 : 1 . 1 ] f ( x )
g ( x )=(x<0) ? −s i n ( x ) :( x<1) ? x∗∗2 : 1/x
Gnuplot niebanalnie Wrocław, 11 października 2010 52 / 68
Zaawansowane możliwości
Rysowanie wykresów łączonych - funkcje nieciągłe
Aby narysować nieciągłość używamysymbolu nieoznaczonego 1/0:
f 1 ( x )=(x<0) ? 0 : 1/0f2 ( x )=(x>=0) ? 1 : 1/0p [ −1 : 1 ] [ −0 . 1 : 1 . 1 ] f 1 ( x ) l s 1 ,f 2 ( x ) l s 1
Gnuplot niebanalnie Wrocław, 11 października 2010 53 / 68
Zaawansowane możliwości
Przykład zastosowania
f(x) ∼ 1/x, g(x) ∼ ax2 + bx+ c, h(x) ∼ cos(x)
Chcemy znaleźć wzór funkcjig(x). Problemy:
1 fitowanie jedynie naprzedziale [0, 1]
2 rysowanie znalezionejfunkcji jedynie na tymprzedziale
Rozwiązania:
1 l i m i t l o w ( x , low )=(x>low ) ? x :1/0l i m i t h i g h ( x , h igh )=(x<h igh ) ? x : 1/0l i m i t ( x , low , h igh )= l i m i t l o w ( l i m i t h i g h ( x , h igh ) , low )f ( x)=a∗x∗∗2+b∗x+cf i t f ( x ) ’ f i t 2 . t x t ’ u ( l i m i t ( $1 , 0 , 1 ) ) : 2 v i a a , b , c
2 oraz:g ( x )=(x>0 && x<1) ? f ( x ) : 1/0p [ : ] [ − 0 . 5 : 2 ] ’ f i t 2 . t x t ’ w p ps 0 .5 pt 7 , g ( x ) lw 2 l c ’ b l a c k ’
Gnuplot niebanalnie Wrocław, 11 października 2010 54 / 68
Zaawansowane możliwości
Przykład zastosowania
Chcemy znaleźć wzór funkcjig(x). Problemy:
1 fitowanie jedynie naprzedziale [0, 1]
2 rysowanie znalezionejfunkcji jedynie na tymprzedziale
Rozwiązania:
1 l i m i t l o w ( x , low )=(x>low ) ? x :1/0l i m i t h i g h ( x , h igh )=(x<h igh ) ? x : 1/0l i m i t ( x , low , h igh )= l i m i t l o w ( l i m i t h i g h ( x , h igh ) , low )f ( x)=a∗x∗∗2+b∗x+cf i t f ( x ) ’ f i t 2 . t x t ’ u ( l i m i t ( $1 , 0 , 1 ) ) : 2 v i a a , b , c
2 oraz:g ( x )=(x>0 && x<1) ? f ( x ) : 1/0p [ : ] [ − 0 . 5 : 2 ] ’ f i t 2 . t x t ’ w p ps 0 .5 pt 7 , g ( x ) lw 2 l c ’ b l a c k ’
Gnuplot niebanalnie Wrocław, 11 października 2010 54 / 68
Zaawansowane możliwości
Gnuplot jako narzędzie do wizualizacji danych (Linux)
Przykład Przybliżenie całki Riemanna dla funkcji∫ π0 sinxdx - animacja
Program C++:#inc l u d e <i o s t r eam>#inc l u d e <cmath>#inc l u d e <c s t d l i b>us ing namespace s t d ;i n t main ( ){double wa r t o s c c a l k i =2;double war to sc =0;double x=0;cout << ” s e t y range [ 0 : 1 ] \n” ;cout << ” unse t key ” << end l ;f o r ( i n t p o d z i a l =1; pod z i a l <100; p o d z i a l++){war tosc =0;double d=M PI/ p o d z i a l ;f o r ( i n t i =0; i<p o d z i a l ; i++){x=M PI/ p o d z i a l∗ i ;wa r to sc+=s i n ( x)∗d ;
}cout << ” s e t t i t l e ’ Pod z i a l : ” << p o d z i a l <<” dok l adnosc : ” << war tosc / w a r t o s c c a l k i<< ” ’\n” ;cout << ” s e t samples ” << p o d z i a l << ”\n” ;cout << ”p [ 0 : p i ] s i n ( x ) w boxes ” << end l ;system ( ” s l e e p 0 .05 ” ) ;}
}
1 Tworzenie pliku FIFO:[ r a fa l@manhat tan ] $ mk f i f o k
2 Uruchomienie gnuplota z plikiem FIFO:wh i l e : ; do ( gnup l o t −p ) < k ; done
3 Kompilacja i uruchomienie programu:g++ riemann . cpp && ./ a . out > k
Efekt:
Gnuplot niebanalnie Wrocław, 11 października 2010 55 / 68
Zaawansowane możliwości
Gnuplot jako narzędzie do wizualizacji danych (Linux)
Przykład Przybliżenie całki Riemanna dla funkcji∫ π0 sinxdx - animacja
Program C++:#inc l u d e <i o s t r eam>#inc l u d e <cmath>#inc l u d e <c s t d l i b>us ing namespace s t d ;i n t main ( ){double wa r t o s c c a l k i =2;double war to sc =0;double x=0;cout << ” s e t y range [ 0 : 1 ] \n” ;cout << ” unse t key ” << end l ;f o r ( i n t p o d z i a l =1; pod z i a l <100; p o d z i a l++){war tosc =0;double d=M PI/ p o d z i a l ;f o r ( i n t i =0; i<p o d z i a l ; i++){x=M PI/ p o d z i a l∗ i ;wa r to sc+=s i n ( x)∗d ;
}cout << ” s e t t i t l e ’ Pod z i a l : ” << p o d z i a l <<” dok l adnosc : ” << war tosc / w a r t o s c c a l k i<< ” ’\n” ;cout << ” s e t samples ” << p o d z i a l << ”\n” ;cout << ”p [ 0 : p i ] s i n ( x ) w boxes ” << end l ;system ( ” s l e e p 0 .05 ” ) ;}
}
1 Tworzenie pliku FIFO:[ r a fa l@manhat tan ] $ mk f i f o k
2 Uruchomienie gnuplota z plikiem FIFO:wh i l e : ; do ( gnup l o t −p ) < k ; done
3 Kompilacja i uruchomienie programu:g++ riemann . cpp && ./ a . out > k
Efekt:
Gnuplot niebanalnie Wrocław, 11 października 2010 55 / 68
Zaawansowane możliwości
Ten sam przykład - lepsze użycie pliku FIFOProgram C++:#inc l u d e <i o s t r eam>#inc l u d e <cmath>#inc l u d e <c s t d l i b>#inc l u d e <f s t r eam>#inc l u d e <s t r i n g>us ing namespace s t d ;
i n t main ( ){double wa r t o s c c a l k i =2;double war to sc =0;double x=0;s t r i n g k o l e j k a=”k” ;o f s t r e am gp ( k o l e j k a . c s t r ( ) ) ;gp << ” s e t s i z e 0 . 6 , 0 . 5 \n” ;gp << ” s e t y range [ 0 : 1 ] \n” ;gp << ” unse t key ” << end l ;f o r ( i n t p o d z i a l =2; pod z i a l <100; p o d z i a l++){war tosc =0;double d=M PI/ p o d z i a l ;f o r ( i n t i =0; i<p o d z i a l ; i++){x=M PI/ p o d z i a l∗ i ;wa r to sc+=s i n ( x)∗d ;
}gp << ” s e t t i t l e ’ Pod z i a l : ” << p o d z i a l <<” dok l adnosc : ” << war tosc / w a r t o s c c a l k i<< ”% ’\n” ;gp << ” s e t samples ” << p o d z i a l << ”\n” ;gp << ”p [ 0 : p i ] s i n ( x ) w boxes ” << end l ;system ( ” s l e e p 0 .05 ” ) ;}gp . c l o s e ( ) ;
}
1 Tworzenie pliku FIFO:[ r a fa l@manhat tan ] $ mk f i f o k
2 Uruchomienie gnuplota z plikiem FIFO:gnup lo t −p k
3 Kompilacja i uruchomienie programu:g++ rieman . 2 . cpp && ./ a . out
Gnuplot niebanalnie Wrocław, 11 października 2010 56 / 68
Zaawansowane możliwości
Przykład: Model ewolucji
Problem: Wizualizacja prostego modelu ewolucji.
1 Mamy jednowymiarową sieć o długości L,
2 Zapełniamy ją losowo liczbami z [0, 1],
3 Obliczamy średnią elementów: S = 0, 563. Znajdujemy najmniejszy element
4 Usuwamy go i jego sąsiadów. W ich miejsce losujemy ponownie liczby z [0, 1]
5 Wracamy do kroku 3. Iterację wykonujemy N -razy
Wizualizacja: W każdym kroku chcemy widzieć wartości przystosowań dlawszystkich węzłów oraz histogram S(t)
Gnuplot niebanalnie Wrocław, 11 października 2010 57 / 68
Zaawansowane możliwości
Przykład: Model ewolucji
Problem: Wizualizacja prostego modelu ewolucji.
1 Mamy jednowymiarową sieć o długości L,
2 Zapełniamy ją losowo liczbami z [0, 1],
3 Obliczamy średnią elementów: S = 0, 563. Znajdujemy najmniejszy element
4 Usuwamy go i jego sąsiadów. W ich miejsce losujemy ponownie liczby z [0, 1]
5 Wracamy do kroku 3. Iterację wykonujemy N -razy
Wizualizacja: W każdym kroku chcemy widzieć wartości przystosowań dlawszystkich węzłów oraz histogram S(t)
Gnuplot niebanalnie Wrocław, 11 października 2010 57 / 68
Zaawansowane możliwości
Przykład: Model ewolucji
Problem: Wizualizacja prostego modelu ewolucji.
1 Mamy jednowymiarową sieć o długości L,
2 Zapełniamy ją losowo liczbami z [0, 1],
3 Obliczamy średnią elementów: S = 0, 563. Znajdujemy najmniejszy element
4 Usuwamy go i jego sąsiadów. W ich miejsce losujemy ponownie liczby z [0, 1]
5 Wracamy do kroku 3. Iterację wykonujemy N -razy
Wizualizacja: W każdym kroku chcemy widzieć wartości przystosowań dlawszystkich węzłów oraz histogram S(t)
Gnuplot niebanalnie Wrocław, 11 października 2010 57 / 68
Zaawansowane możliwości
Przykład: Model ewolucji
Problem: Wizualizacja prostego modelu ewolucji.
1 Mamy jednowymiarową sieć o długości L,
2 Zapełniamy ją losowo liczbami z [0, 1],
3 Obliczamy średnią elementów: S = 0, 563. Znajdujemy najmniejszy element
4 Usuwamy go i jego sąsiadów. W ich miejsce losujemy ponownie liczby z [0, 1]
5 Wracamy do kroku 3. Iterację wykonujemy N -razy
Wizualizacja: W każdym kroku chcemy widzieć wartości przystosowań dlawszystkich węzłów oraz histogram S(t)
Gnuplot niebanalnie Wrocław, 11 października 2010 57 / 68
Zaawansowane możliwości
Przykład: Model ewolucji
Problem: Wizualizacja prostego modelu ewolucji.
1 Mamy jednowymiarową sieć o długości L,
2 Zapełniamy ją losowo liczbami z [0, 1],
3 Obliczamy średnią elementów: S = 0, 563. Znajdujemy najmniejszy element
4 Usuwamy go i jego sąsiadów. W ich miejsce losujemy ponownie liczby z [0, 1]
5 Wracamy do kroku 3. Iterację wykonujemy N -razy
Wizualizacja: W każdym kroku chcemy widzieć wartości przystosowań dlawszystkich węzłów oraz histogram S(t)
Gnuplot niebanalnie Wrocław, 11 października 2010 57 / 68
Zaawansowane możliwości
Przykład rozwiązania
Tworzymy 3 pliki:
k - plik FIFO instrukcje dla gnuplota
e.dat - stan sieci wykres stan(wezel)
histogram.dat wykres S(t), tryb ios::app
. . . .s t r i n g k o l e j k a=”k” ;s t r i n g p l i k d a n e=”e . dat ” ;o f s t r e am gp ( k o l e j k a . c s t r ( ) ) ;o f s t r e am gp2 ( ” h i s tog ram . dat ” ) ;gp2 . c l o s e ( ) ;o f s t r e am gp3 ( ” h i s tog ram . dat ” , i o s : : app ) ;. . . .
Gnuplot niebanalnie Wrocław, 11 października 2010 58 / 68
Zaawansowane możliwości
Przykład rozwiązania
#S − s i e c , g−g en e r a t o rf o r ( i n t i =0; i <5000; i++){S . a n a l i z u j ( ) ;S . t [ S . min]=g . l o s ( ) ;i f (S . min !=0)S . t [ S . min−1]=g . l o s ( ) ;i f (S . min!=S . L−1)S . t [ S . min+1]=g . l o s ( ) ;
S . z a p i s z ( p l i k d a n e ) ;gp3 << S . s r e d n i a << end l ;gp << ” s e t t e rm i n a l x11\n” ;gp << ” s e t mu l t i p l o t \n” ;gp << ” s e t s i z e 1 . 0 , 1 . 0\ n” ;gp << ” s e t o r i g i n 0 ,0\n” ;gp << ”p [ : ] [ 0 : 1 ] ’ ” << p l i k d a n e<< ” ’ w p o i n t s pt 5 , ” << S . s r e d n i a << ”\n” ;gp << ” s e t s i z e 0 . 9 , 0 . 3\ n” ;gp << ” s e t o r i g i n 0 . 05 , 0 . 05\ n” ;gp << ”p ’ h i s tog ram . dat ’ w l i n e s l c 3 \n” ;gp << ” unse t mu l t i p l o t ” << end l ;system ( ” s l e e p 0 .02 ” ) ;
}
Gnuplot niebanalnie Wrocław, 11 października 2010 59 / 68
Zaawansowane możliwości
Przykład rozwiązaniaKompilacja:g++ ewo lu c j a . cpp && ./ a . out
Uruchomienie gnuplota:gnup l o t −p k
Efekt (dla L = 200, t = 500):
Gnuplot niebanalnie Wrocław, 11 października 2010 60 / 68
Przykłady z życia
Przykłady z życia - Lifter
s e t g r i ds e t key o u t s i d e bmargins e t key h o r i z o n t a ls e t y 2 t i c s borders e t y 2 l a b e l ” Na te z en i e I [mA] ” f on t ”Times , 11 ”s e t x l a b e l ”Ob i a z en i e m [mg] ” f on t ”Times , 11 ”s e t y l a b e l ” Nap i e c i e U [ kV ] ” f on t ”Times , 11 ”s e t t i t l e ”L3 Za l e zno s c U i I od o b c i a z e n i a ” f o n t ”Times , 13 ”up ( x)=aup∗x+bupum( x)=aum∗x+bumi p ( x)=a i p ∗x+b ipim ( x)=aim∗x+bimf i t up ( x ) ’ L3 . p . t x t ’ u 1 :2 v i a aup , bupf i t um( x ) ’ L3 .m. t x t ’ u 1 :2 v i a aum , bumf i t i p ( x ) ’ L3 . p . t x t ’ u 1 : 3 v i a a ip , b i pf i t im ( x ) ’ L3 .m. t x t ’ u 1 : 3 v i a aim , bimp ’ L3 . p . t x t ’ u 1 : 2 : 4 w y e r r o r b a r s t i t l e ”Nap i e c i e , korona +” l t 1 ,up ( x ) l t 1 n o t i t l e ,’ L3 . p . t x t ’ u 1 : 3 : 5 w y e r r o r b a r s axe s x1y2 t i t l e ”Natezen ie , korona +” l t 2 ,i p ( x ) l t 2 n o t i t l e axe s x1y2 ,’ L3 .m. t x t ’ u 1 : 2 : 4 w y e r r o r b a r s t i t l e ”Nap i e c i e , korona −” l t 3 ,um( x ) n o t i t l e l t 3 ,’ L3 .m. t x t ’ u 1 : 3 : 5 w y e r r o r b a r s axe s x1y2 t i t l e ”Natezen ie , korona −” l t 4 ,im ( x ) axe s x1y2 l t 4 n o t i t l e
Gnuplot niebanalnie Wrocław, 11 października 2010 61 / 68
Przykłady z życia
Przykłady z życia - Lifter
Gnuplot niebanalnie Wrocław, 11 października 2010 62 / 68
Przykłady z życia
Przykłady z życia - Lifter
s e t x l a b e l ”OX”s e t y l a b e l ”OY”s e t z l a b e l ”E”s e t view 60 ,30s e t pm3ds e t dgr id3d 80 ,80s e t p a l e t t e r gb f o rmu l a e −21,−22,−23s e t hidden3dse t t i c s l e v e l 0s e t t e rm ina l wxts e t contours e t c l a b e ls e t s t y l e data l i n e ss e t cntrparam l e v e l s d i s c r e t e 30 ,70 ,110 ,150sp [ : ] [ : ] [ : ] ’ p o l e . 3 d kwadrat . z0 . poprawka . t x t ’ u 1 : 2 : 7
Gnuplot niebanalnie Wrocław, 11 października 2010 63 / 68
Przykłady z życia
Przykłady z życia - Lifter
Wartość natężenia polaelektrycznego tuż naddolną elektrodąkwadratowego liftera.(listing powyżej)
Wartość natężenia polaw odległości 0.5 nadpowierzchnią skrzydłaliftera.
Gnuplot niebanalnie Wrocław, 11 października 2010 64 / 68
Przykłady z życia
Przykłady z życia - Promieniowanie
s e t p a l e t t es e t hidden3dse t p o i n t s i z e 2 .0s e t x l a b e l ”OX”s e t y l a b e l ”OY”s e t z l a b e l ””s e t t i c s l e v e l 0s e t xrange [−2 : 2 ]s e t yrange [−2 : 2 ]s e t zrange [−1 : 1 ]s e t view 70 , 24 , 1 , 1s e t t i t l e ”Rozk lad katowy promien iowan ia p r zy v=0.5 c”
f on t ”Times−Roman ,15 ”sp ’ r o z k l a d . l a rmor . h−11. v0 . 5 . t10 . 9 9 5 6 . dat ’ u 1 : 2 : 3 : 4 w p p a l e t t e
Gnuplot niebanalnie Wrocław, 11 października 2010 65 / 68
Przykłady z życia
Przykłady z życia - Lifter
Kątowy rozkład mocypromieniowaniaobliczonej z wzoruLarmora przy prędkości0, 1c
Kątowy rozkład mocypromieniowaniaobliczonej z wzoruLarmora przy prędkości0, 5c(listing powyżej)
Gnuplot niebanalnie Wrocław, 11 października 2010 66 / 68
Literatura
Literatura
1 http://t16web.lanl.gov/Kawano/gnuplot/index-e.html
2 http://www.dynamicnetservices.com/~will/gnuplot
3 http://www.cs.hmc.edu/~vrable/gnuplot/using-gnuplot.html
Gnuplot niebanalnie Wrocław, 11 października 2010 67 / 68