Advanced Data Visualization Examples with R-Part II

27
Prepared by Volkan OBAN Advanced Data Visualization Examples with R-Part II Example: >library(plot3D) >image2D(Hypsometry, xlab = "longitude", ylab = "latitude", contour = list(levels = 0, col = "black", lwd = 2), shade = 0.1, main = "Hypsometry data set", clab = "m") >rect(-50, 10, -20, 40, lwd = 3)

Transcript of Advanced Data Visualization Examples with R-Part II

Page 1: Advanced Data Visualization Examples with R-Part II

Prepared by Volkan OBAN

Advanced Data Visualization Examples with R-Part IIExample:

>library(plot3D)

>image2D(Hypsometry, xlab = "longitude", ylab = "latitude", contour = list(levels = 0, col = "black", lwd = 2), shade = 0.1, main = "Hypsometry data set", clab = "m")

>rect(-50, 10, -20, 40, lwd = 3)

Page 2: Advanced Data Visualization Examples with R-Part II

Example: >library(plot3D)

> par(mfrow = c(2, 2), mar = c(0, 0, 0, 0))> # Shape 1> M <- mesh(seq(0, 6*pi, length.out = 80),+ seq(pi/3, pi, length.out = 80))> u <- M$x ; v <- M$y> x <- u/2 * sin(v) * cos(u)> y <- u/2 * sin(v) * sin(u)> z <- u/2 * cos(v)> surf3D(x, y, z, colvar = z, colkey = FALSE, box = FALSE)> # Shape 2: add border> M <- mesh(seq(0, 2*pi, length.out = 80),+ seq(0, 2*pi, length.out = 80))> u <- M$x ; v <- M$y> x <- sin(u)> y <- sin(v)> z <- sin(u + v)> surf3D(x, y, z, colvar = z, border = "black", colkey = FALSE)> # shape 3: uses same mesh, white facets> x <- (3 + cos(v/2)*sin(u) - sin(v/2)*sin(2*u))*cos(v)> y <- (3 + cos(v/2)*sin(u) - sin(v/2)*sin(2*u))*sin(v)

Page 3: Advanced Data Visualization Examples with R-Part II

Example:

> par (mfrow = c(1, 2))> arrows2D(x0 = runif(10), y0 = runif(10),+ x1 = runif(10), y1 = runif(10), colvar = 1:10,+ code = 3, main = "arrows2D")> arrows3D(x0 = runif(10), y0 = runif(10), z0 = runif(10),+ x1 = runif(10), y1 = runif(10), z1 = runif(10),+ colvar = 1:10, code = 1:3, main = "arrows3D", colkey = FALSE)>

Page 4: Advanced Data Visualization Examples with R-Part II

Example:> persp3D(z = volcano, zlim = c(-60, 200), phi = 20,colkey = list(length = 0.2, width = 0.4, shift = 0.15,cex.axis = 0.8, cex.clab = 0.85), lighting = TRUE, lphi = 90,clab = c("","height","m"), bty = "f", plot = FALSE)> # create gradient in x-direction> Vx <- volcano[-1, ] - volcano[-nrow(volcano), ]> # add as image with own color key, at bottom> image3D(z = -60, colvar = Vx/10, add = TRUE,colkey = list(length = 0.2, width = 0.4, shift = -0.15,cex.axis = 0.8, cex.clab = 0.85),clab = c("","gradient","m/m"), plot = FALSE)> # add contour> contour3D(z = -60+0.01, colvar = Vx/10, add = TRUE,col = "black", plot = TRUE)

Example:

Page 5: Advanced Data Visualization Examples with R-Part II

> library(scatterplot3d)> > n <- 10> x <- seq(-10,10,,n)> y <- seq(-10,10,,n)> grd <- expand.grid(x=x,y=y)> z <- matrix(2*grd$x^3 + 3*grd$y^2, length(x), length(y))> image(x, y, z, col=rainbow(100))> plot(x, y, type = "l", col = "green")> > X <- grd$x> Y <- grd$y> Z <- 2*X^3 + 3*Y^2> s3d <- scatterplot3d(X, Y, Z, color = "blue", pch=20)> s3d.coords <- s3d$xyz.convert(X, Y, Z)> D3_coord=cbind(s3d.coords$x,s3d.coords$y)> lines(D3_coord, t="l", col=rgb(0,0,0,0.2))

Example:

Page 6: Advanced Data Visualization Examples with R-Part II

barplot(matrix(sample(1:4, 16, replace=T),ncol=4),angle=45, density=1:4*10, col=1)

Example:require(plot3D)lon <- seq(165.5, 188.5, length.out = 30)lat <- seq(-38.5, -10, length.out = 30)

Page 7: Advanced Data Visualization Examples with R-Part II

xy <- table(cut(quakes$long, lon),            cut(quakes$lat, lat))xmid <- 0.5*(lon[-1] + lon[-length(lon)])ymid <- 0.5*(lat[-1] + lat[-length(lat)]) par (mar = par("mar") + c(0, 0, 0, 2))hist3D(x = xmid, y = ymid, z = xy,  zlim = c(-20, 40), main = "Earth quakes",  ylab = "latitude", xlab = "longitude",  zlab = "counts", bty= "g", phi = 5, theta = 25,  shade = 0.2, col = "white", border = "black",  d = 1, ticktype = "detailed") with (quakes, scatter3D(x = long, y = lat,   z = rep(-20, length.out = length(long)),   colvar = quakes$depth, col = gg.col(100),   add = TRUE, pch = 18, clab = c("depth", "m"),  colkey = list(length = 0.5, width = 0.5,      dist = 0.05, cex.axis = 0.8, cex.clab = 0.8)))

Example:> library(maps)

> coplot(lat ~ long | depth, data = quakes, number=4,panel=function(x, y, ...) {usr <- par("usr")rect(usr[1], usr[3], usr[2], usr[4], col="white")map("world2", regions=c("New Zealand", "Fiji"),

Page 8: Advanced Data Visualization Examples with R-Part II

add=TRUE, lwd=0.1, fill=TRUE, col="grey")text(180, -13, "Fiji", adj=1, cex=0.7)text(170, -35, "NZ", cex=0.7)points(x, y, pch=".") })

Example:

> library(grid)> levels <- round(seq(90, 10, length=25))> greys <- paste("grey", c(levels, rev(levels)), sep="")> grid.circle(x=seq(0.1, 0.9, length=100),y=0.5 + 0.4*sin(seq(0, 2*pi, length=100)), r=abs(0.1*cos(seq(0, 2*pi, length=100))),gp=gpar(col=greys))

Page 9: Advanced Data Visualization Examples with R-Part II

Example:> library(misc3d)> x <- seq(-2,2,len=50)> g <- expand.grid(x = x, y = x, z = x)> v <- array(g$x^4 + g$y^4 + g$z^4, rep(length(x),3))> con <- computeContour3d(v, max(v), 1)> drawScene(makeTriangles(con))

Page 10: Advanced Data Visualization Examples with R-Part II

misc3d: Miscellaneous 3D Plots

Example:> library(misc3d)> f <- function(x, y, z)x^2+y^2+z^2> x <- seq(-2,2,len=20)> contour3d(f,4,x,x,x)> contour3d(f,4,x,x,x, engine = "standard")

Page 11: Advanced Data Visualization Examples with R-Part II

> # ball with one corner removed.> contour3d(f,4,x,x,x, mask = function(x,y,z) x > 0 | y > 0 | z > 0)> contour3d(f,4,x,x,x, mask = function(x,y,z) x > 0 | y > 0 | z > 0,engine="standard", screen = list(x = 290, y = -20),color = "red", color2 = "white")

Example:> library(AnalyzeFMRI)Zorunlu paket yükleniyor: tcltkZorunlu paket yükleniyor: R.matlabR.matlab v3.6.0 (2016-07-05) successfully loaded. See ?R.matlab for help> a <- f.read.analyze.volume(system.file("example.img", package="AnalyzeFMRI"))> a <- a[,,,1]> contour3d(a, 1:64, 1:64, 1.5*(1:21), lev=c(3000, 8000, 10000),+ alpha = c(0.2, 0.5, 1), color = c("white", "red", "green"))> # alternative masking out a corner> m <- array(TRUE, dim(a))> m[1:30,1:30,1:10] <- FALSE> contour3d(a, 1:64, 1:64, 1.5*(1:21), lev=c(3000, 8000, 10000),

Page 12: Advanced Data Visualization Examples with R-Part II

+ mask = m, color = c("white", "red", "green"))> contour3d(a, 1:64, 1:64, 1.5*(1:21), lev=c(3000, 8000, 10000),+ color = c("white", "red", "green"),+ color2 = c("gray", "red", "green"),+ mask = m, engine="standard",+ scale = FALSE, screen=list(z = 60, x = -120))

Example:> nmix3 <- function(x, y, z, m, s) { 0.3*dnorm(x, -m, s) * dnorm(y, -m, s) * dnorm(z, -m, s) +0.3*dnorm(x, -2*m, s) * dnorm(y, -2*m, s) * dnorm(z, -2*m, s) +0.4*dnorm(x, -3*m, s) * dnorm(y, -3 * m, s) * dnorm(z, -3*m, s) }> f <- function(x,y,z) nmix3(x,y,z,0.5,.1)> n <- 20> x <- y <- z <- seq(-2, 2, len=n)> contour3dObj <- contour3d(f, 0.35, x, y, z, draw=FALSE, separate=TRUE)> for(i in 1:length(contour3dObj))contour3dObj[[i]]$color <- rainbow(length(contour3dObj))[i]> drawScene.rgl(contour3dObj)>

Page 13: Advanced Data Visualization Examples with R-Part II

Example:> nmix3 <- function(x, y, z, m, s) {+ 0.4 * dnorm(x, m, s) * dnorm(y, m, s) * dnorm(z, m, s) ++ 0.3 * dnorm(x, -m, s) * dnorm(y, -m, s) * dnorm(z, -m, s) ++ 0.3 * dnorm(x, m, s) * dnorm(y, -1.5 * m, s) * dnorm(z, m, s)+ }> x<-seq(-2, 2, len=40)> g<-expand.grid(x = x, y = x, z = x)> v<-array(nmix3(g$x,g$y,g$z, .5,.5), c(40,40,40))> slices3d(vol1=v, main="View of a mixture of three tri-variate normals", col1=heat.colors(256))

Page 14: Advanced Data Visualization Examples with R-Part II

Example:library(ggplot2)g <- ggplot(mtcars, aes(x=factor(cyl)))g + geom_bar(fill = "pink",color="violet",size=2,width=.5)+ coord_flip()

Page 15: Advanced Data Visualization Examples with R-Part II

Example:

>library(ggplot2)

> data("Orange")> qplot(age, circumference, data = Orange, geom = c("point", "line"), color = Tree)

Page 16: Advanced Data Visualization Examples with R-Part II

Example:

library(plyr)

mean.prop.sw <- c(0.7, 0.6, 0.67, 0.5, 0.45, 0.48, 0.41, 0.34, 0.5, 0.33)

sd.prop.sw <- c(0.3, 0.4, 0.2, 0.35, 0.28, 0.31, 0.29, 0.26, 0.21, 0.23)

Page 17: Advanced Data Visualization Examples with R-Part II

N <- 100

b <- barplot(mean.prop.sw, las = 1, xlab = " ", ylab = " ", col = "grey", cex.lab = 1.7,

cex.main = 1.5, axes = FALSE, ylim = c(0, 1))

axis(1, c(0.8, 2, 3.2, 4.4, 5.6, 6.8, 8, 9.2, 10.4, 11.6), 1:10, cex.axis = 1.3)

axis(2, seq(0, 0.8, by = 0.2), cex.axis = 1.3, las = 1)

mtext("Block", side = 1, line = 2.5, cex = 1.5, font = 2)

mtext("Proportion of Switches", side = 2, line = 3, cex = 1.5, font = 2)

l_ply(seq_along(b), function(x) arrows(x0 = b[x], y0 = mean.prop.sw[x], x1 = b[x],

y1 = mean.prop.sw[x] + 1.96 * sd.prop.sw[x]/sqrt(N), code = 2, length = 0.1,

angle = 90, lwd = 1.5))

Page 18: Advanced Data Visualization Examples with R-Part II

Example:

>library("psych")

> library("qgraph")> > # Load BFI data:> data(bfi)> bfi <- bfi[, 1:25]> > # Groups and names object (not needed really, but make the plots easier to> # interpret):> Names <- scan("http://sachaepskamp.com/files/BFIitems.txt", what = "character", sep = "\n")Read 25 items> > # Create groups object:> Groups <- rep(c("A", "C", "E", "N", "O"), each = 5)> > # Compute correlations:> cor_bfi <- cor_auto(bfi)Variables detected as ordinal: A1; A2; A3; A4; A5; C1; C2; C3; C4; C5; E1; E2; E3; E4; E5; N1; N2; N3; N4; N5; O1; O2; O3; O4; O5> > # Plot correlation network:> graph_cor <- qgraph(cor_bfi, layout = "spring", nodeNames = Names, groups = Groups, legend.cex = 0.6, + DoNotPlot = TRUE)> > # Plot partial correlation network:> graph_pcor <- qgraph(cor_bfi, graph = "concentration", layout = "spring", nodeNames = Names, + groups = Groups, legend.cex = 0.6, DoNotPlot = TRUE)> > # Plot glasso network:

Page 19: Advanced Data Visualization Examples with R-Part II

> graph_glas <- qgraph(cor_bfi, graph = "glasso", sampleSize = nrow(bfi), layout = "spring", + nodeNames = Names, legend.cex = 0.6, groups = Groups, legend.cex = 0.7, GLratio = 2)

Page 20: Advanced Data Visualization Examples with R-Part II

Example:

> library (ggplot2)

> g <- ggplot(diamonds, aes(x = carat, y = price)) > g + geom_point(aes(color = color)) + facet_grid(cut ~ clarity)

Page 21: Advanced Data Visualization Examples with R-Part II

Example:> data("diamonds")> ggplot(diamonds, aes(y = carat, x = cut)) + geom_violin()

Page 22: Advanced Data Visualization Examples with R-Part II

Example:> library(ggtree)> set.seed(2015-12-31)> tr <- rtree(15)> p <- ggtree(tr)> > a <- runif(14, 0, 0.33)> b <- runif(14, 0, 0.33)> c <- runif(14, 0, 0.33)> d <- 1 - a - b - c> dat <- data.frame(a=a, b=b, c=c, d=d)> ## input data should have a column of `node` that store the node number> dat$node <- 15+1:14> > ## cols parameter indicate which columns store stats (a, b, c and d in this example)> bars <- nodebar(dat, cols=1:4)> > inset(p, bars)

Page 23: Advanced Data Visualization Examples with R-Part II

Example:

> cat("\nheight weight health\n1 0.6008 0.3355 1.280\n2 0.9440 0.6890 1.208\n3 0.6150 0.6980 1.036\n4 1.2340 0.7617 1.395\n5 0.7870 0.8910 0.912\n6 0.9150 0.9330 1.175\n7 1.0490 0.9430 1.237\n8 1.1840 1.0060 1.048\n9 0.7370 1.0200 1.003\n10 1.0770 1.2150 0.943\n11 1.1280 1.2230 0.912\n12 1.5000 1.2360 1.311\n13 1.5310 1.3530 1.411\n14 1.1500 1.3770 0.603\n15 1.9340 2.0734 1.073 ", + file = "height_weight.dat")> > hw <- read.table("height_weight.dat", header = T)> > head(hw) height weight health1 0.6008 0.3355 1.2802 0.9440 0.6890 1.2083 0.6150 0.6980 1.0364 1.2340 0.7617 1.3955 0.7870 0.8910 0.9126 0.9150 0.9330 1.175> qplot(x = weight, y = health, data = hw) + geom_smooth(method = lm)

Page 24: Advanced Data Visualization Examples with R-Part II