require(RnavGraph) require(PairViz) # require(hanna) data(olive) require(RDRToolbox) require(cluster) require(mclust) require(kernlab) require(vegan) data <- data.frame(scale(olive[,-(1:2)])) pointlabels <- as.character(olive[,"Area"]) ################################ # # k-means # ################################ k <- 9 kmdata <- kmeans(data,k) groups <- kmdata$cluster ng.data <- ng_data(name = "OliveKM", data = data, shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups, labels = as.character(olive[,"Area"]) ) glyphs <- as.vector(apply(hpaths(names(ng.data)),1, FUN = function(x){x})) G <- completegraph(shortnames(ng.data)) LG <- linegraph(G) ng.lg <- ng_graph("3d transitions",LG, layout = 'kamadaKawaiSpring') ng.lgnot <- ng_graph("4d transitions",complement(LG), layout = 'kamadaKawaiSpring') nav <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = glyphs,ng_2d(ng.data,ng.lgnot))) nav1 <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) ################################ # # model based # ################################ mcdata <- Mclust(data, 1:20) groups <- mcdata$classification ng.data <- ng_data(name = "OliveMC", data = data, shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups, labels = pointlabels ) LG <- linegraph(G) ng.lg <- ng_graph("3d transitions",LG, layout = 'kamadaKawaiSpring') ng.lgnot <- ng_graph("4d transitions",complement(LG), layout = 'kamadaKawaiSpring') glyphs <- hpaths(shortnames(ng.data)) nav <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = glyphs), ng_2d(ng.data,ng.lgnot))) nav1 <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = glyphs), ng_2d(ng.data,ng.lgnot))) scagNav(data = ng.data, scags = c("Monotonic", "NotMonotonic", "Clumpy", "NotClumpy", "Convex", "NotConvex", "Stringy", "NotStringy", "Skinny", "NotSkinny", "Outlying","NotOutlying", "Sparse", "NotSparse", "Striated", "NotStriated", "Skewed", "NotSkewed"), glyphs = glyphs, topFrac = 0.15, sep = ":") x <- runif(nrow(ng.data@data)) y <- runif(nrow(ng.data@data)) handler <- tk2d_init(x = x, y = y, data = ng.data@data, name = ng.data@name, labels = pointlabels, glyphs = hpaths(names(ng.data))) ################################ # # agnes hierarchical # Single linkage # ################################ agdata <- agnes(data, method="single") groups <- cutree(as.hclust(agdata),h=1.2) ng.data <- ng_data(name = "OliveAgSingLink", data = data, shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups, labels = as.character(olive[,"Area"]) ) G <- completegraph(shortnames(ng.data)) LG <- linegraph(G) ng.lg <- ng_graph("3d transitions",LG, layout = 'kamadaKawaiSpring') ng.lgnot <- ng_graph("4d transitions",complement(LG), layout = 'kamadaKawaiSpring') nav <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) nav1 <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) ################################ # # agnes hierarchical # Average linkage # ################################ agdata <- agnes(data, method="average") groups <- cutree(as.hclust(agdata),h=3) ng.data <- ng_data(name = "OliveAgAveLink", data = data, shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups, labels = as.character(olive[,"Area"]) ) G <- completegraph(shortnames(ng.data)) LG <- linegraph(G) ng.lg <- ng_graph("3d transitions",LG, layout = 'kamadaKawaiSpring') ng.lgnot <- ng_graph("4d transitions",complement(LG), layout = 'kamadaKawaiSpring') nav <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) nav1 <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) ################################ # # agnes hierarchical # Complete linkage # ################################ agdata <- agnes(data, method="complete") groups <- cutree(as.hclust(agdata),h=4) ng.data <- ng_data(name = "OliveAgCmpLink2", data = data, shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups, labels = as.character(olive[,"Area"]) ) G <- completegraph(shortnames(ng.data)) LG <- linegraph(G) ng.lg <- ng_graph("3d transitions",LG, layout = 'kamadaKawaiSpring') ng.lgnot <- ng_graph("4d transitions",complement(LG), layout = 'kamadaKawaiSpring') nav <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) nav1 <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) ################################ # # kernel k-means # ################################ k <- 9 kkmdata <- kkmeans(as.matrix(data),k) groups <- kkmdata kpcs <-kpca(data,features=8) ng.data <- ng_data(name = "Olive Kernel KM", data = kpcs, #data, #shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups, labels = as.character(olive[,"Area"]) ) G <- completegraph(shortnames(ng.data)) LG <- linegraph(G) ng.lg <- ng_graph("3d transitions",LG, layout = 'kamadaKawaiSpring') ng.lgnot <- ng_graph("4d transitions",complement(LG), layout = 'kamadaKawaiSpring') nav <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) nav1 <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) ########################## # # A box in arbitrary d # box_d <- function(nface=15, p=3, cut=0.5, noise=0.0){ n <- nface * 2 * p face <- rep(cut, nface) if (noise > 0) face <- face + runif(nface,-noise,noise) result <- matrix(0,nrow=n,ncol=p) for (j in 1:p) { result[,j] <- runif(n,-cut, cut) } for (j in 1:p) { start <- (2*(j-1)*nface) + 1 end <- 2*j*nface half <- end - nface #rows <- seq(start,half,by=1) #result[start:half,j] <- face result[(start:half),j] <- face result[((half+1):end),j] <- - face } result } b6 <- box_d(nface=20,p=6,cut=10) groups <- rep(seq(1, nrow(b6)/20),20) groups <- matrix(groups,ncol=20, byrow = FALSE) groups <- c(groups[1,], groups[2,], groups[3,], groups[4,], groups[5,], groups[6,], groups[7,], groups[8,], groups[9,], groups[10,], groups[11,], groups[12,]) mcdata <- Mclust(b6, 1:20) groups <- mcdata$classification dims <- 4 dise <- vegdist(b6, method="euclidean") ord <- isomap(dise,k = 12, ndim= dims, fragmentedOK = TRUE) df.b6 <- data.frame(b6) ng.data <- ng_data(name = "Six D box raw data", data = df.b6, #shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups ) iso.b6 <- data.frame(ord$points) ng.data <- ng_data(name = "Six D box Isomap", data = iso.b6, #shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups ) lle.b6 <- data.frame(LLE(b6,dim=5,k=5)) ng.data <- ng_data(name = "Six D box LLE", data = lle.b6, #shortnames = c("p1","p2","s","oleic","l1","l2","a","e"), group = groups ) G <- completegraph(names(ng.data)) LG <- linegraph(G) ng.lg <- ng_graph("3d transitions",LG, layout = 'kamadaKawaiSpring') ng.lgnot <- ng_graph("4d transitions",complement(LG), layout = 'kamadaKawaiSpring') nav <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) nav1 <- navGraph(ng.data, list(ng.lg,ng.lgnot), list(ng_2d(ng.data,ng.lg,glyphs = hpaths(shortnames(ng.data))),ng_2d(ng.data,ng.lgnot))) scagNav(df.b6, scags = c("Clumpy", "NotClumpy", "Monotonic", "NotMonotonic", "Convex", "NotConvex", "Stringy", "NotStringy", "Skinny", "NotSkinny", "Outlying","NotOutlying", "Sparse", "NotSparse", "Striated", "NotStriated", "Skewed", "NotSkewed"), topFrac = 0.05)