DATA MINING
Desktop Survival Guide by Graham Williams |
|||||
Networks |
Network graphs, as might be used in social network analysis, link analysis, or network analysis, are useful in presenting visualisations that we can explore for patterns.
A simple graph.
> library(igraph) > my.df <- data.frame(e1=c(0.0, 0.5, 0.3), e2=c(0.2, 0.0, 0.6), e3=c(0.6, 0.4, 0.0)) > rownames(my.df) <- c("e1", "e2", "e3") > my.df |
e1 e2 e3 e1 0.0 0.2 0.6 e2 0.5 0.0 0.4 e3 0.3 0.6 0.0 |
> my.graph <- graph.adjacency(as.matrix(my.df), weighted=TRUE) > V(my.graph)$label <- V(my.graph)$name > V(my.graph)$shape <- "rectangle" > V(my.graph)$color <- "white" > V(my.graph)$size <- 40 > my.mst <- minimum.spanning.tree(my.graph) > my.layout <- layout.reingold.tilford(my.graph, mode="all") > plot(my.mst, layout=my.layout) |
Another example, showing a "tree" network with each node replaced by a plot. This should move into the "understanding" chapter as it is useulf if the bars were a profile of the means of a cluster and we put this into a dendrogram and so we can visualise the hierarchical clsuter?
> library(diagram) > library(Hmisc) > nnodes <- 7 > labs <- letters[1:nnodes] > M <- matrix(nrow=nnodes, ncol=nnodes, byrow=TRUE, data=0) > colnames(M) <- rownames(M) <- labs > M["a", "b"] <- "Sunshine" > M["a", "c"] <- "Humidity" > M["b", "d"] <- "Rain" > M["b", "e"] <- "Temp" > M["c", "f"] <- "Cloud9" > M["c", "g"] <- "Cloud3" > pp <- plotmat(M, pos=c(1,2,4), curve=0, name="", shadow.size=0, lwd=1, box.lwd=0, cex.txt=0.8, box.size=0.05, box.prop=0.5, main="Sample Tree") > ds <- rnorm(5000) > for(i in 1:nnodes) subplot(hist(ds[runif(100, 1, length(ds))], main="", xlab="", ylab="", axes=FALSE, col="grey90", breaks="fd", border=TRUE), pp$comp[i,1], pp$comp[i,2]) |