getwd()
## [1] "C:/Users/distr/OneDrive/R FILE/network"
setwd("C:/Users/distr/OneDrive/바탕 화면/Research/NETWORK lgbtq organization in SK/Data_220615")
rm(list=ls())
library(tidygraph)
library(ggraph)
library(igraph)
library(tidyverse)
\(~\)
linkdata_1990 <- read.csv("C:/Users/distr/OneDrive/바탕 화면/Research/NETWORK lgbtq organization in SK/Data_220615/network_1990_onemode.csv"
, header = T #첫 행 변수명으로
, sep = "," #csv에서 자료 구분은 ","
, stringsAsFactors = F
, row.name = 1 #★엑셀파일상 1열을 데이터프레임의 열 제목으로
, na.strings = ""
, as.is = T)
nodedata_1990 <- read.csv("C:/Users/distr/OneDrive/바탕 화면/Research/NETWORK lgbtq organization in SK/Data_220615/node_1990_220610_2.csv"
, header = T #첫 행 변수명으로
, sep = "," #csv에서 자료 구분은 ","
, stringsAsFactors = F
, na.strings = ""
, as.is = T) #as.is = T: character을 팩터로 바꾸지 마라
nodedata_1990 <- nodedata_1990 %>%
mutate(level4 = ifelse(level2 == 1 & level3 <= 3, 1,
ifelse(level2 == 2 & level3 <= 3, 2,
ifelse(level3 == 4, 3, NA))))
mynetwork1990 <- igraph::graph_from_adjacency_matrix(as.matrix(linkdata_1990)
, mode = "undirected" #화살표 방향
, diag = F # 대각선값
, weighted = T) # 누적값
V(mynetwork1990)$between = nodedata_1990$between #nodedata에서 bet 속성 가져오기
V(mynetwork1990)$degree = nodedata_1990$degree #nodedata에서 degree 속성 가져오기
V(mynetwork1990)$foundyear = nodedata_1990$foundyear #nodedata에서 foundyear 속성 가져오기
V(mynetwork1990)$level1 = nodedata_1990$level1 #nodedata에서 level1 속성 가져오기
V(mynetwork1990)$level2 = nodedata_1990$level2 #nodedata에서 level2 속성 가져오기
V(mynetwork1990)$level3 = nodedata_1990$level3 #nodedata에서 level3 속성 가져오기
V(mynetwork1990)$level4 = nodedata_1990$level4 #nodedata에서 level4 속성 가져오기
isolated <- which(degree(mynetwork1990)==0) # 결측치 찾기
mynetwork1990 <- delete.vertices(mynetwork1990, isolated) #결측치 없는 네트워크 데이터 만들기
mynetwork1990 %>%
ggraph() +
theme_graph() +
geom_edge_link2(aes(edge_linetype = factor(weight)
, edge_colour = factor(weight)
, edge_width = factor(weight)
, alpha = 0.5)) +
geom_node_point(aes(fill = factor(level4)
, size = between
, alpha = 0.9)
, shape = 21) +
geom_node_text(aes(filter = degree > 0.23, label = name)
, col = 'black'
, repel = T) +
scale_edge_color_manual(values = c('gray20', 'gray20', 'gray20')) + # tie color를 weight 값에 맞춰서
scale_edge_width_manual(values = c(0.2, 1.0, 1.0)) + # tie width를 weight에 비례하게
scale_edge_linetype_manual(values = c(2, 1, 1)) +
scale_fill_manual(name = ""
, values = c("gray99", "gray50", "gray1")
, labels = c("Univ","Professional", "Others")) +
scale_size_continuous(range = c(3, 6)) +
scale_alpha_identity() +
guides(size = F
, edge_alpha = F
, edge_width = F
, edge_linetype = F
, edge_colour = F
, alpha = F) +
theme(legend.position = "right")
\(~\)
linkdata_2000 <- read.csv("C:/Users/distr/OneDrive/바탕 화면/Research/NETWORK lgbtq organization in SK/Data_220615/network_2000_onemode.csv"
, header = T #첫 행 변수명으로
, sep = "," #csv에서 자료 구분은 ","
, stringsAsFactors = F
, row.name = 1 #★엑셀파일상 1열을 데이터프레임의 열 제목으로
, na.strings = ""
, as.is = T)
nodedata_2000 <- read.csv("C:/Users/distr/OneDrive/바탕 화면/Research/NETWORK lgbtq organization in SK/Data_220615/node_2000_220610_2.csv"
, header = T #첫 행 변수명으로
, sep = "," #csv에서 자료 구분은 ","
, stringsAsFactors = F
, na.strings = ""
, as.is = T) #as.is = T: character을 팩터로 바꾸지 마라
nodedata_2000 <- as.tibble(nodedata_2000)
nodedata_2000 <- nodedata_2000 %>%
mutate(level4 = ifelse(level2 == 1 & level3 <= 3, 1,
ifelse(level2 == 2 & level3 <= 3, 2,
ifelse(level3 == 4, 3, NA))))
mynetwork2000 <- igraph::graph_from_adjacency_matrix(as.matrix(linkdata_2000)
, mode = "undirected" #화살표 방향
, diag = F # 대각선값
, weighted = T) # 누적값
V(mynetwork2000)$between = nodedata_2000$between #nodedata에서 bet 속성 가져오기
V(mynetwork2000)$degree = nodedata_2000$degree #nodedata에서 degree 속성 가져오기
V(mynetwork2000)$foundyear = nodedata_2000$foundyear #nodedata에서 foundyear 속성 가져오기
V(mynetwork2000)$level1 = nodedata_2000$level1
V(mynetwork2000)$level2 = nodedata_2000$level2
V(mynetwork2000)$level3 = nodedata_2000$level3
V(mynetwork2000)$level4 = nodedata_2000$level4
isolated_2000 <- which(degree(mynetwork2000)==0) # 결측치 찾기
mynetwork2000 <- delete.vertices(mynetwork2000, isolated_2000) #결측치 없는 네트워크 데이터 만들기
mynetwork2000 %>%
ggraph() +
theme_graph() +
geom_edge_link2(aes(edge_linetype = factor(weight)
, edge_colour = factor(weight)
, edge_width = factor(weight)
, alpha = 0.5)) +
geom_node_point(aes(fill = factor(level4)
, size = between
, alpha = 0.9)
, shape = 21) +
geom_node_text(aes(filter = between > 0, label = name)
, repel = TRUE
, col = 'black'
, size = 3)+
scale_edge_color_manual(values = c('gray20', 'gray20', 'gray20', 'gray20'))+
scale_edge_width_manual(values = c(0.2, 0.6, 1.0, 1.5))+
scale_edge_linetype_manual(values = c(2, 1, 1, 1)) +
scale_fill_manual(name = ""
, values = c("gray99", "gray50", "gray1")
, labels = c("Univ","Professional", "Others")) +
scale_size_continuous(range = c(3, 6)) +
scale_alpha_identity() +
guides(size = F
, edge_alpha = F
, edge_width = F
, edge_linetype = F
, edge_colour = F
, alpha = F) +
theme(legend.position = "right")
\(~\)
linkdata_2010 <- read.csv("C:/Users/distr/OneDrive/바탕 화면/Research/NETWORK lgbtq organization in SK/Data_220615/network_2010_onemode.csv"
, header = T #첫 행 변수명으로
, sep = "," #csv에서 자료 구분은 ","
, stringsAsFactors = F
, row.name = 1 #★엑셀파일상 1열을 데이터프레임의 열 제목으로
, na.strings = ""
, as.is = T)
nodedata_2010 <- read.csv("C:/Users/distr/OneDrive/바탕 화면/Research/NETWORK lgbtq organization in SK/Data_220615/node_2010_220610_2.csv"
, header = T #첫 행 변수명으로
, sep = "," #csv에서 자료 구분은 ","
, stringsAsFactors = F
, na.strings = ""
, as.is = F) #as.is = T: character을 팩터로 바꾸지 마라
nodedata_2010 <- nodedata_2010 %>%
mutate(level4 = ifelse(level2 == 1 & level3 <= 3, 1,
ifelse(level2 == 2 & level3 <= 3, 2,
ifelse(level3 == 4, 3, NA))))
mynetwork2010 <- igraph::graph_from_adjacency_matrix(as.matrix(linkdata_2010)
, mode = "undirected" #화살표 방향
, diag = F # 대각선값
, weighted = T) # 누적값
V(mynetwork2010)$between = nodedata_2010$between #nodedata에서 bet 속성 가져오기
V(mynetwork2010)$between_2 = nodedata_2010$between_2 #nodedata에서 bet 속성 가져오기
V(mynetwork2010)$degree = nodedata_2010$degree #nodedata에서 degree 속성 가져오기
V(mynetwork2010)$foundyear = nodedata_2010$foundyear #nodedata에서 foundyear 속성 가져오기
V(mynetwork2010)$level1 = nodedata_2010$level1
V(mynetwork2010)$level2 = nodedata_2010$level2
V(mynetwork2010)$level3 = nodedata_2010$level3
V(mynetwork2010)$level4 = nodedata_2010$level4
isolated_2010 <- which(degree(mynetwork2010)==0) # 결측치 찾기
mynetwork2010 <- delete.vertices(mynetwork2010, isolated_2010) #결측치 없는 네트워크 데이터 만들기
mynetwork2010 %>%
ggraph() +
theme_graph() +
geom_edge_link2(aes(edge_linetype = factor(weight)
, edge_colour = factor(weight)
, edge_width = factor(weight)
, alpha = 0.5)) +
geom_node_point(aes(fill = factor(level4)
, size = between
, alpha = 0.9)
, shape = 21) +
geom_node_text(aes(filter = between > 1, label = name)
, repel = TRUE
, col = 'black')+
scale_edge_color_manual(values = c('gray50', 'gray20', 'gray20', 'gray20', 'gray20', 'gray20'))+
scale_edge_width_manual(values = c(0.2, 0.5, 0.8, 1.2, 1.5, 1.8))+
scale_edge_linetype_manual(values = c(2, 1, 1, 1, 1, 1)) +
scale_fill_manual(name = ""
, values = c("gray99", "gray50", "gray1")
, labels = c("Univ","Professional", "Others")) +
scale_size_continuous(range = c(3, 6)) +
scale_alpha_identity() +
guides(size = F
, edge_alpha = F
, edge_width = F
, edge_linetype = F
, edge_colour = F
, alpha = F) +
theme(legend.position = "right")
\(~\)
linkdata_2010_2 <- linkdata_2010
nodedata_2010_2 <- nodedata_2010
mynetwork2010_2 <- igraph::graph_from_adjacency_matrix(as.matrix(linkdata_2010_2)
, mode = "undirected" #화살표 방향
, diag = F # 대각선값
, weighted = T) # 누적값
V(mynetwork2010_2)$between = nodedata_2010_2$between #nodedata에서 bet 속성 가져오기
V(mynetwork2010_2)$degree = nodedata_2010_2$degree #nodedata에서 degree 속성 가져오기
V(mynetwork2010_2)$foundyear = nodedata_2010_2$foundyear #nodedata에서 degree 속성 가져오기
V(mynetwork2010_2)$between_2 = nodedata_2010_2$between_2 #nodedata에서 bet2 속성 가져오기
V(mynetwork2010_2)$level1 = nodedata_2010_2$level1
V(mynetwork2010_2)$level2 = nodedata_2010_2$level2
V(mynetwork2010_2)$level3 = nodedata_2010_2$level3
V(mynetwork2010_2)$level4 = nodedata_2010_2$level4
isolated_2010_2 <- which(E(mynetwork2010_2)$weight< 2) #weight가 2보다 작은 애들(대학조직) 설정
mynetwork2010_2 <- delete.edges(mynetwork2010_2, isolated_2010_2) #없애기
isolated_2010_3 <- which(degree(mynetwork2010_2)==0) # 방금 위에서 만들어진 네트워크 기준으로 결측치 찾기
mynetwork2010_2 <- delete.vertices(mynetwork2010_2, isolated_2010_3) #결측치 없는 네트워크 데이터 만들기
mynetwork2010_2 %>%
ggraph() +
theme_graph() +
geom_edge_link2(aes(edge_linetype = factor(weight)
, edge_colour = factor(weight)
, edge_width = factor(weight)
, alpha = 0.5)) +
geom_node_point(aes(fill = factor(level4)
, size = between
, alpha = 0.9)
, shape = 21) +
geom_node_text(aes(filter = between_2 > 0, label = name)
, col = 'black'
, repel = T)+
scale_edge_color_manual(values = c('gray50', 'gray20', 'gray20', 'gray20', 'gray20', 'gray20'))+
scale_edge_width_manual(values = c(0.2, 0.5, 0.8, 1.2, 1.5, 1.8))+
scale_edge_linetype_manual(values = c(2, 1, 1, 1, 1, 1)) +
scale_fill_manual(name = ""
, values = c("gray99", "gray50", "gray1")
, labels = c("Univ","Professional", "Others")) +
scale_size_continuous(range = c(3, 6)) +
scale_alpha_identity() +
guides(size = F
, edge_alpha = F
, edge_width = F
, edge_linetype = F
, edge_colour = F
, alpha = F) +
theme(legend.position = "right")
\(~\)
linkdata_2000_2 <- linkdata_2000
nodedata_2000_2 <- nodedata_2000
mynetwork2000_2 <- igraph::graph_from_adjacency_matrix(as.matrix(linkdata_2000_2)
, mode = "undirected" #화살표 방향
, diag = F # 대각선값
, weighted = T) # 누적값
V(mynetwork2000_2)$between = nodedata_2000_2$between #nodedata에서 bet 속성 가져오기
V(mynetwork2000_2)$degree = nodedata_2000_2$degree #nodedata에서 degree 속성 가져오기
V(mynetwork2000_2)$foundyear = nodedata_2000_2$foundyear #nodedata에서 degree 속성 가져오기
V(mynetwork2000_2)$level1 = nodedata_2000_2$level1
V(mynetwork2000_2)$level2 = nodedata_2000_2$level2
V(mynetwork2000_2)$level3 = nodedata_2000_2$level3
V(mynetwork2000_2)$level4 = nodedata_2000_2$level4
isolated_2000_2 <- which(degree(mynetwork2000_2)==0) # 결측치 찾기
mynetwork2000_2 <- delete.vertices(mynetwork2000_2, isolated_2000_2) #결측치 없는 네트워크 데이터 만들기
isolated_2000_3 <- which(V(mynetwork2000_2)$between > 1) # 표준화된 bet 값이 1보다 큰 애들 결측치 처리
mynetwork2000_2 <- delete.vertices(mynetwork2000_2, isolated_2000_3)
mynetwork2000_2 %>%
ggraph() +
theme_graph() +
geom_edge_link2(aes(edge_linetype = factor(weight)
, edge_colour = factor(weight)
, edge_width = factor(weight)
, alpha = 0.5)) +
geom_node_point(aes(fill = factor(level4)
, size = between
, alpha = 0.9)
, shape = 21) +
geom_node_text(aes(filter = between >= 0, label = name)
, repel = T
, col = 'black')+
scale_edge_color_manual(values = c('gray20', 'gray20', 'gray20', 'gray20'))+
scale_edge_width_manual(values = c(0.2, 0.6, 1.0, 1.5))+
scale_edge_linetype_manual(values = c(2, 1, 1, 1)) +
scale_fill_manual(name = ""
, values = c("gray99", "gray50", "gray1")
, labels = c("Univ","Professional", "Others")) +
scale_size_continuous(range = c(3, 6)) +
scale_alpha_identity() +
guides(size = F
, edge_alpha = F
, edge_width = F
, edge_linetype = F
, edge_colour = F
, alpha = F) +
theme(legend.position = "right")
\(~\)
linkdata_2010_3 <- linkdata_2010
nodedata_2010_3 <- nodedata_2010
mynetwork2010_3 <- igraph::graph_from_adjacency_matrix(as.matrix(linkdata_2010_3)
, mode = "undirected" #화살표 방향
, diag = F # 대각선값
, weighted = T) # 누적값
V(mynetwork2010_3)$between = nodedata_2010_3$between #nodedata에서 bet 속성 가져오기
V(mynetwork2010_3)$degree = nodedata_2010_3$degree #nodedata에서 degree 속성 가져오기
V(mynetwork2010_3)$foundyear = nodedata_2010_3$foundyear #nodedata에서 degree 속성 가져오기
V(mynetwork2010_3)$level1 = nodedata_2010_3$level1
V(mynetwork2010_3)$level2 = nodedata_2010_3$level2
V(mynetwork2010_3)$level3 = nodedata_2010_3$level3
V(mynetwork2010_3)$level4 = nodedata_2010_3$level4
isolated_2010_3 <- which(degree(mynetwork2010_3)==0) # 결측치 찾기
mynetwork2010_3 <- delete.vertices(mynetwork2010_3, isolated_2010_3) #결측치 없는 네트워크 데이터 만들기
isolated_2010_4 <- which(V(mynetwork2010_3)$between > 1)
mynetwork2010_3 <- delete.vertices(mynetwork2010_3, isolated_2010_4)
mynetwork2010_3 %>%
ggraph() +
theme_graph() +
geom_edge_link2(aes(edge_linetype = factor(weight)
, edge_colour = factor(weight)
, edge_width = factor(weight)
, alpha = 0.5)) +
geom_node_point(aes(fill = factor(level4)
, size = between
, alpha = 0.9)
, shape = 21) +
geom_node_text(aes(filter = between > 0, label = name)
, col = 'black'
, size = 2
, repel = T)+
scale_edge_color_manual(values = c('gray50', 'gray20', 'gray20', 'gray20', 'gray20', 'gray20'))+
scale_edge_width_manual(values = c(0.2, 0.5, 0.8, 1.2, 1.5, 1.8))+
scale_edge_linetype_manual(values = c(2, 1, 1, 1, 1, 1)) +
scale_fill_manual(name = ""
, values = c("gray99", "gray50", "gray1")
, labels = c("Univ","Professional", "Others")) +
scale_size_continuous(range = c(3, 6)) +
scale_alpha_identity() +
guides(size = F
, edge_alpha = F
, edge_width = F
, edge_linetype = F
, edge_colour = F
, alpha = F) +
theme(legend.position = "right")