Post on 16-Apr-2017
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)
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)
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)>
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:
> 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:
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)
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"),
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))
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))
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")
> # 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),
+ 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)>
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))
Example:library(ggplot2)g <- ggplot(mtcars, aes(x=factor(cyl)))g + geom_bar(fill = "pink",color="violet",size=2,width=.5)+ coord_flip()
Example:
>library(ggplot2)
> data("Orange")> qplot(age, circumference, data = Orange, geom = c("point", "line"), color = Tree)
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)
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))
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:
> 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)
Example:
> library (ggplot2)
> g <- ggplot(diamonds, aes(x = carat, y = price)) > g + geom_point(aes(color = color)) + facet_grid(cut ~ clarity)
Example:> data("diamonds")> ggplot(diamonds, aes(y = carat, x = cut)) + geom_violin()
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)
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)