In Class Exercise 6b

Author

Guan Jhen Lin

Published

May 18, 2024

Modified

May 18, 2024

MC 3 Kick Starter, dataset we are using is from last year 2023. The dataset is slightly different from 2024.

pacman::p_load(jsonlite, tidygraph,ggraph,
               visNetwork, graphlayouts, ggforce, 
               skimr, tidytext, tidyverse)
mc3_data <- fromJSON("MC3_2023.json")
class(mc3_data)
[1] "list"
mc3_edges <-
as_tibble(mc3_data$links) %>%
    distinct() %>%
    mutate(source = 
as.character(source),
        target = 
as.character(target),
        type = as.character(type)) %>%
  group_by(source, target, type) %>% 
    summarise(weights = n()) %>%
  filter(source!=target) %>%
  ungroup()
mc3_nodes <- as_tibble(mc3_data$nodes) %>%
  mutate(country = as.character(country),
        id = as.character(id),
        product_services = as.character(product_services),
        revenue_omu = 
as.numeric(as.character(revenue_omu)),
        type = as.character(type)) %>%
  select(id, country, type, revenue_omu,
product_services)
id1 <- mc3_edges%>%
  select(source) %>%
  rename(id = source)
id2 <- mc3_edges %>%
  select(target) %>%
  rename(id= target)
mc3_nodes1 <- rbind(id1, id2) %>%
  distinct() %>%
  left_join(mc3_nodes,
            unmatched = "drop")
mc3_graph <- tbl_graph(nodes = mc3_nodes1,
                       edges = mc3_edges,
                       directed = FALSE) %>%
  mutate(betweenness_centrality = 
centrality_betweenness(),
         closeness_centrality = 
centrality_closeness())
mc3_graph %>%
  filter(betweenness_centrality >= 300000) %>%
ggraph(layout = "fr") +
  geom_edge_link(aes(alpha=0.5)) +
  geom_node_point(aes(
    size = betweenness_centrality, 
    colors = "lightblue",
    alpha = 0.5)) +
  scale_size_continuous(range=c(1,10))+
  theme_graph()

mc3_graph %>%
  filter(betweenness_centrality >= 100000) %>%
ggraph(layout = "fr") +
  geom_edge_link(aes(alpha=0.5)) +
  geom_node_point(aes(
    size = betweenness_centrality, 
    colors = "lightblue",
    alpha = 0.5)) +
  scale_size_continuous(range=c(1,10))+
  theme_graph()