Loading libraries:
library(dplyr)
library(knitr)
Setting options:
opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE, cache = FALSE,
error = FALSE, dev="svg")
Now getting data:
rawData <- read.csv("dataset_network.csv", sep = ";", header = TRUE,
stringsAsFactors = FALSE, encoding="latin 2")
…we do necessary data transformations.
data <- rawData %>%
select(one_of(c("CONTACT_NAME", "NAZWA"))) %>%
mutate(CONTACT_NAME = gsub("\"","", CONTACT_NAME)) %>%
mutate(CONTACT_NAME = gsub(" .*$", "", CONTACT_NAME)) %>%
mutate(NAZWA = gsub(" -.*$", "", NAZWA)) %>%
mutate(NAZWA = gsub("Inwestycje w środki trwałe i WNiP", "Investments", NAZWA)) %>%
mutate(NAZWA = toupper(NAZWA)) %>%
mutate(CONTACT_NAME = toupper(CONTACT_NAME)) %>%
filter(NAZWA != "STAFF") %>%
rename(to = NAZWA) %>%
rename(from = CONTACT_NAME)
summaryData <- data %>%
select(from) %>%
group_by(from) %>%
summarise(freq = n())
mergeData <- left_join(data, summaryData, by = "from") %>%
mutate(from = ifelse(freq >= 3, from, "INNE")) %>%
select(from, to)
addData <- data %>%
select(to) %>%
distinct(to) %>%
mutate(from = "KB") %>%
select(from, to)
readyData <- bind_rows(addData, mergeData)
Now we make a graph with DiagrammeR:
library(DiagrammeR)
library(V8)
costData <- create_nodes(
nodes = addData$to,
label = TRUE,
type = "lower",
style = "filled",
color = c("black"),
fillcolor = "orange",
alpha = 0.25,
shape = c("oval"),
fontsize = 30,
height = 1.5,
width = 4
)
contactData <- create_nodes(
nodes = mergeData$from,
label = TRUE,
type = "lower",
style = "filled",
color = c("black"),
fillcolor = "yellow",
alpha = 0.25,
shape = "oval",
fontsize = 30,
width = 3
)
nodeData <- combine_nodes(costData, contactData)
edgeData <- create_edges(
from = mergeData$from,
to = mergeData$to,
relationship = "leading_to",
alpha = 0.25
)
diagramm <- create_graph(nodes_df = nodeData,
edges_df = edgeData,
directed = FALSE,
graph_attrs = c("layout = circo", "overlap = false"),
graph_name = "Cost centers & main suppliers network"
)
rendered <- render_graph(diagramm, width = 800, height = 800)
rendered
I hope you enjoyed.