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)

Fig. 1: “Cost centers & main suppliers network”

rendered

I hope you enjoyed.