7.4 Adding attributes to a network object
Load node attributes (metadata)
data_url2 <- "https://raw.githubusercontent.com/mahoffman/social_network_analysis/master/Data/attribute_df.csv"
attributes <- read_csv(data_url2)## Rows: 6 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): Name, Gender, Role
## dbl (1): Age
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(attributes)## # A tibble: 6 × 4
## Name Age Gender Role
## <chr> <dbl> <chr> <chr>
## 1 Greg 53 Male Father
## 2 Maria 52 Female Mother
## 3 Mark 25 Male Son
## 4 Lexi 23 Female Daughter
## 5 Grace 19 Female Daughter
## 6 Nick 14 Male Son
add attributes to the igraph object
moneyNetwork_ig <- graph_from_data_frame(money_edgelist,
directed = T,
vertices = attributes)
moneyNetwork_ig## IGRAPH c60f3e3 DN-- 6 11 --
## + attr: name (v/c), Age (v/n), Gender (v/c), Role (v/c)
## + edges from c60f3e3 (vertex names):
## [1] Greg ->Maria Greg ->Mark Greg ->Lexi Greg ->Grace Greg ->Nick
## [6] Maria->Mark Maria->Lexi Maria->Grace Maria->Nick Mark ->Nick
## [11] Lexi ->Nick
V(moneyNetwork_ig)$Gender ## [1] "Male" "Female" "Male" "Female" "Female" "Male"
and the ggraph object
moneyNetwork_tg <- tbl_graph(edges = money_edgelist,
directed = T,
nodes = attributes)
moneyNetwork_tg## # A tbl_graph: 6 nodes and 11 edges
## #
## # A directed acyclic simple graph with 1 component
## #
## # A tibble: 6 × 4
## Name Age Gender Role
## <chr> <dbl> <chr> <chr>
## 1 Greg 53 Male Father
## 2 Maria 52 Female Mother
## 3 Mark 25 Male Son
## 4 Lexi 23 Female Daughter
## 5 Grace 19 Female Daughter
## 6 Nick 14 Male Son
## #
## # A tibble: 11 × 2
## from to
## <int> <int>
## 1 1 2
## 2 1 3
## 3 1 4
## # ℹ 8 more rows
Let’s set a layout for the network
kk_layout <- layout.kamada.kawai(moneyNetwork_ig)