Zobrazení 3D dat •Balíček rgl •install.packages("rgl") •library(rgl) •Náhodné souřadnice x, y, z: •x <- c(3,5,7,9,8,2,1,1,1,4) •y <- c(5,4,1,1,0,6,9,5,7,2) •z <- c(2,1,2,0,2,1,0,4,2,4) •Základní funkce: •rgl.open() – otevření nového rgl okna •rgl.spheres() – vykreslení bodů ("kuliček") •rgl.bbox() – vykreslení boxu kolem grafu •rgl.bg – nastavení pozadí rgl okna •rgl.lines() – vykreslení linií • •ZÁKLADNÍ PARAMETRY •rgl.viewpoint(theta = 20, phi = 45, zoom = 3) •rgl.spheres(x,y,z, r = 0.2, color="blueviolet") •Zobrazení os pomocí funkce rgl.lines •Osa x •rgl.lines(c(0, 10), c(0, 0), c(0, 0), color = "midnightblue") •Osa y •rgl.lines(c(0, 0), c(0,10), c(0, 0), color = "coral4") •Osa z •rgl.lines(c(0, 0), c(0, 0), c(0,10), color = "seagreen") •Note: možnost zobrazení os pomocí funkce axis3d() • • ________________________________________________________________________________ Literatura k balíčku rgl: https://cran.r-project.org/web/packages/rgl/rgl.pdf Obr. vpravo zdroj: http://www.grad.hr/geomteh3d/Monge/07bokocrt/bokocrt_eng.html [29. 3. 2018] oktant x y z I + + + II + - + III + - - IV + + - V - + + VI - - + VII - - - VIII - + - C:\Users\L. Polcerova\Desktop\Bi3434 2018\navrh\body.png C:\Users\L. Polcerova\Desktop\Bi3434 2018\navrh\typy_bodu.png •TYPY BODŮ: •open3d() •shapelist3d(tetrahedron3d(col = "slateblue4"), 0, 0, 0) •shapelist3d(octahedron3d(col = "slateblue3"), 3, 0, 0) •shapelist3d(cube3d(col = "slateblue1"), 6, 0, 0) •shapelist3d(dodecahedron3d(col = "plum2"), 9, 0, 0) •shapelist3d(icosahedron3d(col = "palevioletred3"), 12, 0, 0) •shapelist3d(cuboctahedron3d(col = "salmon"), 15, 0, 0) • • • • •Použití - příklad: •rgl.open() •rgl.bg(color = "aliceblue") •par3d(windowRect=c(100,100,600,600)) •rgl.viewpoint(theta = 20, phi = 45, zoom = 1) •shapelist3d(dodecahedron3d(col = "royalblue4"), x, y, z, size = 1.2, alpha = 0.5) # size = velikost bodu, alpha = pruhlednost •axis3d("x", pos=c( NA, 0, 0 ), col = "darkgrey") •axis3d("y", pos=c( 0, NA, 0 ), col = "darkgrey") •axis3d("z", pos=c( 0, 0, NA ), col = "darkgrey") • Uložení zobrazených dat ve 3D •V rámci balíčku rgl: •rgl.snapshot("typy_bodu.png", fmt = "png") •rgl.postscript("typy_bodu.pdf", fmt = "pdf") • •Poznámky: •ukládání může trvat delší dobu (zejména v rámci .pdf) •Note: ne vždy se poloprůhledné objekty v .pdf uloží správně •.png soubory mají defaultně poměrně malé rozlišení •volte snímek tak, aby bylo dobře viditelné, co chcete ukázat, tzn. nastavte vhodně funkce: •rgl.viewpoint(theta, phi, zoom) •par3d(windowRect=c(100,100,600,600)) • •Pro zavření grafického okna: •rgl.close() • Proložení rovinou •obecná rovnice roviny •ax + by + cz + d = 0 •funkce: •planes3d(a, b, c, d, alpha = 0.5) •rgl.planes(a, b, c, d, alpha = 0.5) vs. scatter3d() Dokumentace k scatter3d: https://cran.r-project.org/web/packages/scatterplot3d/vignettes/s3d.pdf Zobrazení antropologických dat ve 3D •1) Co chceme znázornit? •Příklad •pozici landmarku glabella u vzorku 60 jedinců (data: data3d.opr.txt, v ISu) •průměr tohoto vzorku (mračna bodů) a zobrazit elipsoid pro 95% interval spolehlivosti • •2) Jaký bude nejvhodnější typ grafu na zobrazení? •3D plot bodů •Note: máme antropologická data! •Muži vs. Ženy • •3) Příprava dat pro zobrazení. • •4) Samotné zobrazení dat. • • •Načteme data: •DATA3D <- read.delim("data3d.opr.txt", header = TRUE) •attach(DATA3D) •str(DATA3D) •dim(DATA3D) •Příprava dat pro zobrazení (muži, ženy): •DATA3D_f <- DATA3D[sex == "f",] •DATA3D_m <- DATA3D[sex == "m",] •V případě, že chceme zobrazit všechny dostupné body ze souboru data3d.opr.txt doporučuji si do pomocných objektů uložit x, y a z souřadnice. •Pozn.: funkce melt z balíčku reshape. • •Elipsoid – funkce ellipse3d, oblast, do které spadá 95% výskytu dat. • • • • • • • • • •Odlehlá hodnota – jedinec/měření č. 24, vysvětlení: •A. Chyba měření •B. Chyba při generování dat •C. Jedinec z jiné populace •D. Patologický jedinec • •DOMÁCÍ ÚKOL 9 •A) Zobrazte bod bregma (B) pro jedince ze souboru data3d.opr.txt: - obdobným způsobem jako bod glabella (G), tzn. muže a ženy zvlášť (odlište barvou). •Změňte typ bodů (pomocí funkce: shapelist3d) •Vypočítejte průměry a zobrazte je poloprůhledné •Zobrazte elipsoidy pro 50% výskytu dat •Uložte náhled okna jako .png soubor (zvolte vhodně úhel pohledu a velikost pole) •Do ISu vložte .R script a obrázek .png ve tvaru: UČO.R, UČO.png. • •Výsledek může vypadat např. takto: • • C:\Users\L. Polcerova\Desktop\Bi3434 2018 2.1\navrh\B_ellipse3d.png