Διαγράμματα Ροής Sankey

Author

Κώστας Κούδας

Published

February 15, 2026

⚠️️ΥΠΟ ΚΑΤΑΣΚΕΥΗ⚠️
rm(list = ls())
if(!require(networkD3)){
    install.packages("networkD3")
    library(networkD3)
}
Loading required package: networkD3

Αρχικά δημιουργούμε τους κόμβους.

nodes <- data.frame(
  name = c("Κώστας", "Γιάννα", "Αφροδίτη",         # IDs 0, 1, 2 (Α ομάδα κόμβων)
           "Κώστας", "Γιάννα", "Αφροδίτη",         # ID 3, 4, 5  (Β ομάδα κόμβων)
           "Κώστας", "Γιάννα", "Αφροδίτη")         # IDs 6, 7, 8 (Γ ομάδα κόμβων)
)

Ακολούθως ορίζουμε τους συνδέσμους-ροές από κόμβο σε κόμβο

links <- data.frame(
  source = c(0, 0,  # id0 - 1ος κόμβος / Α ομάδα κόμβων (ΠΗΓΗ ΡΟΗΣ)
             1, 1,  # id1 - 2ος κόμβος / Α ομάδα κόμβων (ΠΗΓΗ ΡΟΗΣ)
             2, 2,  # id2 - 3ος κόμβος / Α ομάδα κόμβων (ΠΗΓΗ ΡΟΗΣ)
             3, 3,  # id3 - 1ος κόμβος / Β ομάδα κόμβων (ΠΗΓΗ ΡΟΗΣ)
             4, 4,  # id4 - 2ος κόμβος / Β ομάδα κόμβων (ΠΗΓΗ ΡΟΗΣ)
             5, 5   # id5 - 3ος κόμβος / Β ομάδα κόμβων (ΠΗΓΗ ΡΟΗΣ)
             ), 
  target = c(4, 5, # 2ος&3ος κόμβος / Β ομάδα κόμβων (ΣΤΟΧΟΣ ΡΟΗΣ)
             3, 5, # 1ος&3ος κόμβος / Β ομάδα κόμβων (ΣΤΟΧΟΣ ΡΟΗΣ)
             3, 4, # 1ος&2ος κόμβος / Β ομάδα κόμβων (ΣΤΟΧΟΣ ΡΟΗΣ)
             7, 8, # 2ος&3ος κόμβος / Γ ομάδα κόμβων (ΣΤΟΧΟΣ ΡΟΗΣ)
             6, 8, # 1ος&3ος κόμβος / Γ ομάδα κόμβων (ΣΤΟΧΟΣ ΡΟΗΣ)
             6, 7  # 1ος&2ος κόμβος / Γ ομάδα κόμβων (ΣΤΟΧΟΣ ΡΟΗΣ)
             ), 
  value =  c(20, 10, # μέγεθος ροής Α1->Β2 και Α1->Β3
             30, 15, # μέγεθος ροής Α2->Β1 και Α2->Β3
             5, 20,  # μέγεθος ροής Α3->Β1 και Α3->Β2
             15, 5,  # μέγεθος ροής Β1->Γ2 και Β1->Γ3
             20, 10, # μέγεθος ροής Β2->Γ1 και Β2->Γ3
             30, 20  # μέγεθος ροής Β3->Γ1 και Β3->Γ2
             )
)

Και το διάγραμμα είναι έτοιμο να φανεί.

sankey <- sankeyNetwork(Links = links, 
                        Nodes = nodes,
                        Source = "source", 
                        Target = "target", 
                        Value = "value", 
                        NodeID = "name",
                        fontSize = 14, 
                        nodeWidth = 30)

# Εμφάνιση
sankey