rm(list = ls())
###############################input data
dir_path <- "C:\\Users\\xut2\\Desktop\\data\\"
dir_path_name <- list.files(pattern = ".*",dir_path,full.names = T, recursive = T)
dir_path_name
## [1] "C:\\Users\\xut2\\Desktop\\data\\data_1.xlsx"
library(openxlsx)
data_1 <- read.xlsx(grep("data_1.xlsx",dir_path_name,value = T), sheet = 1)
data_1
## COL1 COL2
## 1 A AA
## 2 A BB
## 3 A CC
## 4 B BB
## 5 B DD
## 6 B CC
## 7 C AA
## 8 C BB
## 9 C CC
compound_list_com <- data.frame(combn(unique(data_1$COL1),2))
compound_list_com
## X1 X2 X3
## 1 A A B
## 2 B C C
data_list <- list()
for (i in 1:ncol(compound_list_com)) {
#i = 1
print(i)
data_11 <- data_1[data_1$COL1 %in% as.character(compound_list_com[,i]), ]
list_1 <- data_11[data_11$COL1 == as.character(compound_list_com[,i])[1],]$COL2
list_2 <- data_11[data_11$COL1 == as.character(compound_list_com[,i])[2],]$COL2
data_12 <- data.frame(from = as.character(compound_list_com[,i])[1],
to = as.character(compound_list_com[,i])[2],
value = length(as.character(intersect(list_1, list_2))))
data_list[[i]] <- data_12
}
## [1] 1
## [1] 2
## [1] 3
data_2 <- do.call("rbind", data_list)
data_2
## from to value
## 1 A B 2
## 2 A C 3
## 3 B C 2
#############################################
data_list_1 <- list()
for (i in 1:length(unique(data_1$COL1))) {
#i = 1
data_u1 <- data_1[data_1$COL1 == unique(data_1$COL1)[i], ]
data_u2 <- data_1[data_1$COL1 != unique(data_1$COL1)[i], ]
data_u3 <- data.frame(from = unique(data_1$COL1)[i],
to = unique(data_1$COL1)[i],
value = length(as.character(setdiff(data_u1$COL2, data_u2$COL2))))
data_list_1[[i]] <- data_u3
}
data_3 <- do.call("rbind", data_list_1)
data_3
## from to value
## 1 A A 0
## 2 B B 1
## 3 C C 0
##############################################
data_4 <- rbind(data_2, data_3)
data_4
## from to value
## 1 A B 2
## 2 A C 3
## 3 B C 2
## 4 A A 0
## 5 B B 1
## 6 C C 0
write.csv(data_4, paste0(dir_path,Sys.Date(),"-","data_for_chord.csv"),row.names = FALSE)
# install.packages("circlize")
library(circlize)
## Warning: package 'circlize' was built under R version 4.4.1
## ========================================
## circlize version 0.4.16
## CRAN page: https://cran.r-project.org/package=circlize
## Github page: https://github.com/jokergoo/circlize
## Documentation: https://jokergoo.github.io/circlize_book/book/
##
## If you use it in published research, please cite:
## Gu, Z. circlize implements and enhances circular visualization
## in R. Bioinformatics 2014.
##
## This message can be suppressed by:
## suppressPackageStartupMessages(library(circlize))
## ========================================
library(RPMG)
chordDiagram(data_4)

chordDiagram(data_4, grid.col = pastel.colors(3, seed=1)[3:1], transparency = 0.4,
link.lwd = .1, # Line width
link.lty = .1, # Line type
link.border = .1,
annotationTrack = c("name", "grid"))

# Restart circular layout parameters
circos.clear()
#ref https://r-charts.com/flow/chord-diagram/