Generate network for your data

Jayachandra N 2025-02-12

Are you looking to explore the complex relationships within your CSV data? The netknitr open-source framework, developed using R, RShiny, and visNetwork, makes this task simple. All you need to do is install netknitr on your computer, and you can easily generate network maps to visualize the connections within your data.

# install.packages('netknitr')
# netknitr::knitNet()

Curious about how it works? Check out the step-by-step guide provided by the netknitr framework to see how it generates network maps.

Load

# install.packages('netknitr')
library(netknitr)
library(dplyr)
## 
## Attaching package: 'dplyr'

## The following objects are masked from 'package:stats':
## 
##     filter, lag

## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(visNetwork)

Data : It works for any data

set.seed(0009)

mtcars$name <- row.names(mtcars)
cols <- c('gear', 'name', "cyl")
my_data <- mtcars[,cols]
my_data
##                     gear                name cyl
## Mazda RX4              4           Mazda RX4   6
## Mazda RX4 Wag          4       Mazda RX4 Wag   6
## Datsun 710             4          Datsun 710   4
## Hornet 4 Drive         3      Hornet 4 Drive   6
## Hornet Sportabout      3   Hornet Sportabout   8
## Valiant                3             Valiant   6
## Duster 360             3          Duster 360   8
## Merc 240D              4           Merc 240D   4
## Merc 230               4            Merc 230   4
## Merc 280               4            Merc 280   6
## Merc 280C              4           Merc 280C   6
## Merc 450SE             3          Merc 450SE   8
## Merc 450SL             3          Merc 450SL   8
## Merc 450SLC            3         Merc 450SLC   8
## Cadillac Fleetwood     3  Cadillac Fleetwood   8
## Lincoln Continental    3 Lincoln Continental   8
## Chrysler Imperial      3   Chrysler Imperial   8
## Fiat 128               4            Fiat 128   4
## Honda Civic            4         Honda Civic   4
## Toyota Corolla         4      Toyota Corolla   4
## Toyota Corona          3       Toyota Corona   4
## Dodge Challenger       3    Dodge Challenger   8
## AMC Javelin            3         AMC Javelin   8
## Camaro Z28             3          Camaro Z28   8
## Pontiac Firebird       3    Pontiac Firebird   8
## Fiat X1-9              4           Fiat X1-9   4
## Porsche 914-2          5       Porsche 914-2   4
## Lotus Europa           5        Lotus Europa   4
## Ford Pantera L         5      Ford Pantera L   8
## Ferrari Dino           5        Ferrari Dino   6
## Maserati Bora          5       Maserati Bora   8
## Volvo 142E             4          Volvo 142E   4
res <- lapply(names(my_data), FUN = function(i) {
  paste0(i, " : ", my_data[[i]])
}) %>% do.call('cbind', .) %>% as.data.frame()
names(res) <- names(my_data)
res %>% head()
##       gear                     name     cyl
## 1 gear : 4         name : Mazda RX4 cyl : 6
## 2 gear : 4     name : Mazda RX4 Wag cyl : 6
## 3 gear : 4        name : Datsun 710 cyl : 4
## 4 gear : 3    name : Hornet 4 Drive cyl : 6
## 5 gear : 3 name : Hornet Sportabout cyl : 8
## 6 gear : 3           name : Valiant cyl : 6
my_data <- res
head(my_data)
##       gear                     name     cyl
## 1 gear : 4         name : Mazda RX4 cyl : 6
## 2 gear : 4     name : Mazda RX4 Wag cyl : 6
## 3 gear : 4        name : Datsun 710 cyl : 4
## 4 gear : 3    name : Hornet 4 Drive cyl : 6
## 5 gear : 3 name : Hornet Sportabout cyl : 8
## 6 gear : 3           name : Valiant cyl : 6

Determine Nodes

## [1] "----Columns considerd for nodes----->"
## [1] "gear"
## [1] "name"
## [1] "cyl"

##    id                      label group
## 1   1                   gear : 4  gear
## 2   2                   gear : 3  gear
## 3   3                   gear : 5  gear
## 4   4           name : Mazda RX4  name
## 5   5       name : Mazda RX4 Wag  name
## 6   6          name : Datsun 710  name
## 7   7      name : Hornet 4 Drive  name
## 8   8   name : Hornet Sportabout  name
## 9   9             name : Valiant  name
## 10 10          name : Duster 360  name
## 11 11           name : Merc 240D  name
## 12 12            name : Merc 230  name
## 13 13            name : Merc 280  name
## 14 14           name : Merc 280C  name
## 15 15          name : Merc 450SE  name
## 16 16          name : Merc 450SL  name
## 17 17         name : Merc 450SLC  name
## 18 18  name : Cadillac Fleetwood  name
## 19 19 name : Lincoln Continental  name
## 20 20   name : Chrysler Imperial  name
## 21 21            name : Fiat 128  name
## 22 22         name : Honda Civic  name
## 23 23      name : Toyota Corolla  name
## 24 24       name : Toyota Corona  name
## 25 25    name : Dodge Challenger  name
## 26 26         name : AMC Javelin  name
## 27 27          name : Camaro Z28  name
## 28 28    name : Pontiac Firebird  name
## 29 29           name : Fiat X1-9  name
## 30 30       name : Porsche 914-2  name
## 31 31        name : Lotus Europa  name
## 32 32      name : Ford Pantera L  name
## 33 33        name : Ferrari Dino  name
## 34 34       name : Maserati Bora  name
## 35 35          name : Volvo 142E  name
## 36 36                    cyl : 6   cyl
## 37 37                    cyl : 4   cyl
## 38 38                    cyl : 8   cyl

Can include shapes and Colors

nodes$shape <- getShapes(nodes)
nodes$colors <- sample(c("darkred", "grey", "orange", "darkblue", "purple", 'green'), nrow(nodes), replace = T)
head(nodes)
##   id                label group shape   colors
## 1  1             gear : 4  gear   dot   orange
## 2  2             gear : 3  gear   dot   orange
## 3  3             gear : 5  gear   dot darkblue
## 4  4     name : Mazda RX4  name  star   orange
## 5  5 name : Mazda RX4 Wag  name  star    green
## 6  6    name : Datsun 710  name  star darkblue

Determine Edges

associations <- getAssociation(my_data[,cols])
edges <- getEdges(associations,nodes)
head(edges)
##   from to
## 1    1  4
## 2    1  5
## 3    1  6
## 4    1 11
## 5    1 12
## 6    1 13

Network

visNetwork(nodes, edges) %>%
  visNodes(color = list(background = "lightblue",
                        border = "darkblue",
                        highlight = "yellow"),
           shadow = list(enabled = TRUE, size = 10))