library(tidyverse)
library(viridis)
library(patchwork)
library(hrbrthemes)
library(circlize)
library(networkD3)
library(plotly)
library(dplyr)

data <- read.csv("your_data.csv")

data<- aggregate(count ~ section + cited_section, data = data, sum)

Sankey With networkD3

data_long <- data #keep original data

colnames(data_long) <- c("source", "target", "value")

data_long$target <- paste(data_long$target, " ", sep="")


nodes <- data.frame(name=c(as.character(data_long$source), as.character(data_long$target)) %>% unique())
 
# With networkD3, connection must be provided using id, not using real name like in the links dataframe.. So we need to reformat it.
data_long$IDsource=match(data_long$source, nodes$name)-1 
data_long$IDtarget=match(data_long$target, nodes$name)-1

# prepare colour scale
MyColours ='d3.scaleOrdinal() .range(["#FFC0CB", "#FFD700", "#FFA07A", "#DDA0DD", "#B0E0E6", "#98FB98","#FF7F7F","#0000FF"])'

# Make the Network
sankeyNetwork(Links = data_long, Nodes = nodes,
                     Source = "IDsource", Target = "IDtarget",
                     Value = "value", NodeID = "name", 
                     sinksRight=FALSE, colourScale=MyColours, nodeWidth=40, fontSize=13, nodePadding=20)

Chord Diagram with chorddiag

devtools::install_github("mattflor/chorddiag")
library(chorddiag)
library(dplyr)
library(tidyverse)

data <- read.csv("your_data.csv")
# Aggregate and sum the 'count' column by 'section' and 'cited_section'
result <- aggregate(count ~ section + cited_section, data = data, sum)

transformed_data <- result %>%
  pivot_wider(
    names_from = section,
    values_from = count,
    values_fill = 0  # Replace missing values with 0
  )

transformed_data$cited_section <- NULL

your_matrix <- as.matrix(transformed_data, colnames = TRUE)
#colnames(your_matrix)
#rownames(your_matrix)
rownames(your_matrix) <- c("A","B","C","D","E","F","G","H")
groupColors <- c("#FFC0CB", "#FFD700", "#FFA07A", "#DDA0DD", "#B0E0E6", "#98FB98","#FF7F7F","#0000FF")

chorddiag(your_matrix, groupColors = groupColors, groupnamePadding = 50,groupnameFontsize = 18,showZeroTooltips=FALSE)