Wizualizacja danych 2D i 3D - Gnuplot dr hab. Bożena Woźna-Szcześniak Akademia im. Jan Długosza bwozna@gmail.com Laboratorium 8
Plan Podstawy wykresów trójwymiarowych Generowanie wykresów powierzchniowych i konturów
Podstawy wykresów trójwymiarowych Za kreślenie wykresów trójwymiarowych odpowiada komenda: splot Większość dyrektyw znanych dla komendy plot działa również dla komendy splot, np dyrektywa title. zakres 3 zmiennej (z) jest określany jako: splot [xmin:xmax][ymin:ymax][zmin:zmax]... Przykład splot [-2:2][-2:2] exp(-(x**2 + y**2))*cos(x/4) *sin(y)*cos(2*(x**2+y**2))
Podstawy wykresów trójwymiarowych Wykonanie - - - 2 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2
Podstawy wykresów trójwymiarowych Do kreślenia wykresów trójwymiarowych z dyrektywa with stosujemy tylko: points, lines, linespoints i impulses. Z komend a splot nie można używać dyrektywy smooth. Zamiast niej można stosować dyrektywę dgrid3d.
Wykresy powierzchni Następujace trzy dyrektywy kontroluja wyglad powierzchni: isosamples - kontroluje liczbę punktów siatki, dla których funkcja dwuargumentowa będzie obliczana. Opcja nie kontroluje danych z pliku. Składania: set isosamples {int:xlines} [, {int:ylines} ] Komenda isosamples pobiera jedna lub dwie wartości całkowite, które określaja liczbę punktów siatki w kierunku x i y odpowiednio. Jeśli tylko jedna wartość jest podana, wartość ta jest używana dla obu kierunków. Domyślnie xlines = 1 oraz ylines = 1.
Wykresy powierzchni set isosamples 3 splot [-2:2][-2:2] exp(-(x**2 + y**2))*cos(x/4) *sin(y)*cos(2*(x**2+y**2)) Wykonanie.4 - - - -.4 2 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2
Wykresy powierzchni set isosamples 1 splot [-2:2][-2:2] exp(-(x**2 + y**2))*cos(x/4) *sin(y)*cos(2*(x**2+y**2)) Wykonanie - - - 2 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2
Wykresy powierzchni Drugi parametr, który kontroluje wykresy powierzchni, to hidden3d definiujacy przezroczystość powierzchni. Składnia: set hidden3d [ offset {int:offset} ] [ trianglepattern {int:mask} ] Parametr offset może być używany do sterowania rodzajem barwy i linii, które sa wykorzystywane do kreślenia dolnej powierzchni. Komenda set hidden3d offset daje ten sam efekt, co komenda set hidden3d. Parametr trianglepattern kontroluje linie, które będa rysowane do połaczenia sasiednich punktów siatki. Domyślna wartość to 3.
Wykresy powierzchni set hidden3d set isosamples 3 splot [-2:2][-2:2] exp(-(x**2 + y**2))*cos(x/4) *sin(y)*cos(2*(x**2+y**2)) Wykonanie.4 - - - -.4 2 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2
Wykresy powierzchni set hidden3d trianglepattern 1 set hidden3d trianglepattern 2 set isosamples 9 set isosamples 6.4 - - - -.4 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2 2.4 - - - -.4 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2 2
Wykresy powierzchni set hidden3d trianglepattern 4 set hidden3d trianglepattern 7 set isosamples 6 set isosamples 4.4 - - - -.4 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2 2.4 - - - -.4 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2 2
Wykresy powierzchni Trzecim parametrem, który kontroluje wyglad powierzchni jest parametr surface, który kontroluje właczanie i wyłaczanie powierzchni: set surface unset surface (na rysunku poniżej).4 - - - -.4 1.5 1.5-2 -1.5-1 -.5.5 1-1.5-1-.5 1.5 2-2 2
Kontury (obrysy) Aby właczyć linie konturu używamy opcji: set contour [ base surface both ] Domyślnie, linie konturu sa naniesione tylko na dolnej części pudełka otaczajac a wykres powierzchni. Domyślne ustawienia konturu zmieniamy za pomoca powyższego polecenia. Jeśli kontury s a aktywne, to poprzez opcję set cntrparam kontrolujemy dwa aspekty konturów: gładkość konturu i ich rozstaw.
Opcja cntrparam set cntrparam [ linear cubicspline bspline ] - ten zestaw słów kluczowych pozwala wybrać jak zbiór punktów tworzacych kontur zostanie połaczony. Domyślny jest styl linear, który stosuje zwyczajne linie proste. cubicspline używa wygładzonej krzywej, która gwarantuje, że przechodzi dokładnie przez wskazane węzły. bspline używa wygładzonej krzywej, która nie gwarantuje, że przechodzi dokładnie przez wskazane węzły.
Opcja cntrparam set cntrparam [ points int:q ] i set cntrparam [ order int:q ] - opcja points kontroluje liczbę punktów, dla których interpolacja pomiędzy dwoma sasiednimi węzłami jest obliczana podczas rysowania konturu. Opcja order ustawiamy kolejność splajnu do wykorzystania (ta opcja dotyczy tylko bspline). order musi być liczba całkowita od 2 do 1. set cntrparam levels [auto [int:n] discrete flt:z [, flt:z1 [,...]] incremental flt:start, flt:inc [, flt:end]] - opcja kontroluje, ile linii konturu zostanie przygotowany i dla jakich wartości z.
Opcja cntrparam set cntrparam levels incremental -,,.8 set contour base set contour surface.4 - - - -.4 2.78e-17 - - - -2-1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2.4 - - - -.4 2.78e-17 - - - -2-1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2
Opcja cntrparam set cntrparam levels incremental -,,.8 set contour both.4 - - - -.4 2.78e-17 - - - -2-1.5-1 -.5.5 1 1.5 2.5 1 1.5 2-1-.5-2-1.5
Opcja clabel set clabel [ "str:format" ] - kontroluje legendę. unset clabel - usuwa legendę set contour both set contour both unset clabel.4 - - - -.4 2.78e-17 - - - -2-1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2
Obramowania Polecenie set border ustala obramowanie kostki, w której znajduje się wykres trójwymiarowy. Przyjmuje jako argument liczbę całkowita, która jest interpretowana jako 12-bitowa maska. Każdy bit włacza wyświetlanie jednej z krawędzi. set border 1 set border 2.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2
Obramowania set border 4 set border 8.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2 set border 16 set border 32.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2
Obramowania set border 64 set border 128.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2 set border 256 set border 512.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2
Obramowania set border 124 set border 248.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2 Wartościa domyślna jest 31, co włacza czterech boki podstawy i lewa oś pionowa.
Etykiety osi Etykiety osi ustawiamy poleceniami: set xlabel, set ylabel oraz set zlabel. set xlabel "x" set ylabel "y" set zlabel "z" z.4 - - - -.4 -.5 x -2-1.5-1-.5 1.5 2.5 1 1.5 y 2
Parametr xyplane Domyślnie kreślona powierzchnia jest podwyższona w stosunku do podstawy. Opcja xyplane pozwala na regulację tego podwyższenia. Składania: set xyplane [ at {flt:zvalue} {flt:frac} ] Pierwsza opcja ustawia powierzchnię dokładnie w określonym punkcie osi z. Druga ustawia wysokość w sposób względny.
Parametr xyplane set xyplane at set xyplane at.4.5 1 1.5 2-1-.5 - -1 -.5.5-2 -1.5-1 1.5 2-2-1.5 - -.4.5 1 1.5 2.4-1-.5-1 -.5.5-2 -1.5 1 1.5 2-2-1.5 - - - -.4 set xyplane at.5 set xyplane at 1.5.5 1 1.5 2 1.5 2-2-1.5-1.5-1 -.5-1-.5.5.4-2 1 - - - -.4.4 - - - -.4-2 -1.5-1 -.5.5 1 1.5 2-2-1.5-1-.5.5 1 1.5 2
Parametr view set view [{flt:polar} [,{flt:azimuthal} [,{flt:scale} [,{flt:z_scale} ]]]] - pierwsze dwa argumenty, to katy pionowego i poziomego widzenia. Pierwszy kat jest ograniczony do [:18], a drugi może przyjać [:36]. Trzeci i czwarty parametr odpowiada za skalowanie. Domyślne wartości tych argumentów, to 1. set view map równoważne set view,, 1, 1.
Parametr view set xyplane -5 set view 6,65 set view 77,77.4 - - -2 - -1.5-1 -.4 -.5.5 1 1.5 2-2 -1.5-1 -.5.5 1 1.5 2.4 - - -1.5-2 -.5-1 -.511.52-2 -1.5-1 -.5.5 1 1.5 2 -.4 set view,,1,1 set view 45,5 2 1.5 1.5 -.5-1 -1.5 - - - -.4-2 -2-1.5-1 -.5.5 1 1.5 2.4 - - -2 - -1.5-1 -.5.5 1 1.5 2 -.4.5 -.5 1-1 1.5-1.5 2-2
Przejcie do widoku konturu set view map #Widok z lotu ptaka set size square #Równomierny rozkład jednostek unset surface #Wyłączenie powierzchni set contour #Włączenie konturu #zwiekszenie liczby linii konturu set cntrparam levels 1 set clabel "%.1f" #Format etykiety set isosamples 15 #Ilość próbek set xlabel "x" set ylabel "y" set zlabel "z" set key lmargin
Przejcie do widoku konturu Wykonanie -. - - - y Widok z lotu ptaka 2 1.5 1.5 -.5-1 -1.5-2 -2-1.5-1 -.5.5 1 1.5 2 x
Format pliku "siatki" Kreślenie danych z pliku # x y z -1 1 1 1 1 1-1 1 1 5 1 1 1 2-1 1 2 1 2 1 1 Poszczególne bloki danych dla "x" musza być oddzielone jedna linia pusta. Każdy blok musi zawierać tę sama liczbę danych. 3-1 1 3 3 1 1
Kreślenie danych z pliku set terminal pdf set encoding utf8 set title "Dane z pliku" set xlabel "x" set ylabel "y" set zlabel "z" set key lmargin set output "w8-13.pdf" splot "siatka.dat" u 1:2:3 w linespoints
Kreślenie danych z pliku Wykonanie Dane z pliku "siatka.dat" u 1:2:3 1 8 z 6 4 2.5 1 1.5 x -.5 2 2.5 3-1 1.5 y
Wygładzanie danych Aby właczyć wygładzanie danych należy użyć poniższych komend (domyślnie komenda ta jest wyłaczona): set dgrid3d [{int:nx}[,{int:ny}[,{int:q}]]] set dgrid3d [ {int:nx} [, {int:ny} ] ] [ splines qnorm [ {int:q} ] gauss cauchy exp box hann [ {flt:dx} [,{flt:dy}]]] Przykład użycia znajduje się poniżej. Przetestuj komendę z dowolnie wybranymi parametrami.
Wygładzanie danych set terminal pdf set encoding utf8 set title "Dane z pliku" set xlabel "x" set ylabel "y" set zlabel "z" unset key set dgrid3d 3,3 gauss.6,.6 set output "w8-14.pdf" splot "siatka.dat" u 1:2:3 w linespoints
Wygładzanie danych Wykonanie Dane z pliku z 1 9 8 7 6 5 4 3 2 1.5 1 1.5 x 2 2.5 3-1 -.5.5 y 1