R/glasso+igraph+networkD3で変数間の関係をインタラクティブに可視化②


せっかくなんでSpecies毎に可視化。

library(dplyr)
library(glasso)
library(igraph)
library(networkD3)

f <- function(x){
  x <- iris %>% filter(Species == x) %>% select(-Species)
  print(dim(x))
  s <- x %>% scale() %>% cov()
  fit <- glasso(s = s, rho = 0.5)
  a <- ifelse(fit$wi != 0, TRUE, FALSE)
  diag(a) <- 0
  colnames(a) <- colnames(x)
  rownames(a) <- colnames(x)
  g <- graph_from_adjacency_matrix(a, mode = "undirected")
  networkData <- as.data.frame(as_edgelist(g))
  return(simpleNetwork(Data = networkData, fontSize = 14, nodeColour = "#006e54", opacity = 1))
}
f("setosa")
f("versicolor")
f("virginica")

Species == "setosa"

Species == "versicolor"

Species == "vriginica"