#install.packages("data.tree")
library(data.tree)

courseMC <- Node$new("Медкибернетика")

baseMC <- courseMC$AddChild("Раздел 1")
lecture1 <- baseMC$AddChild("Лекции: 1")
seminar1 <- baseMC$AddChild("Семинары: 1-7")

SA <- courseMC$AddChild("Раздел 2")
lecture2 <- SA$AddChild("Лекции: 2-3")
seminar2 <- SA$AddChild("Семинары: 8-10")

MIAD <- courseMC$AddChild("Раздел 3")
lecture3 <- MIAD$AddChild("Лекции 4-5")
seminar3 <- MIAD$AddChild("Семинары 11-14")
zachet   <- MIAD$AddChild("Зачет")
test <- zachet$AddChild("Тест")
task <- zachet$AddChild("Задачи")
spich <- zachet$AddChild("Беседа")

print(courseMC)
##                 levelName
## 1  Медкибернетика        
## 2   ¦--Раздел 1          
## 3   ¦   ¦--Лекции: 1     
## 4   ¦   °--Семинары: 1-7 
## 5   ¦--Раздел 2          
## 6   ¦   ¦--Лекции: 2-3   
## 7   ¦   °--Семинары: 8-10
## 8   °--Раздел 3          
## 9       ¦--Лекции 4-5    
## 10      ¦--Семинары 11-14
## 11      °--Зачет         
## 12          ¦--Тест      
## 13          ¦--Задачи    
## 14          °--Беседа
######################################################
#install.packages("igraph")
library(igraph)
## 
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## The following object is masked from 'package:base':
## 
##     union
plot(as.igraph(courseMC, directed = TRUE, direction = "climb"))

########################################################

popClone <- Clone(courseMC)
as.data.frame(courseMC)
##                 levelName
## 1  Медкибернетика        
## 2   ¦--Раздел 1          
## 3   ¦   ¦--Лекции: 1     
## 4   ¦   °--Семинары: 1-7 
## 5   ¦--Раздел 2          
## 6   ¦   ¦--Лекции: 2-3   
## 7   ¦   °--Семинары: 8-10
## 8   °--Раздел 3          
## 9       ¦--Лекции 4-5    
## 10      ¦--Семинары 11-14
## 11      °--Зачет         
## 12          ¦--Тест      
## 13          ¦--Задачи    
## 14          °--Беседа
ToDataFrameNetwork(courseMC)
##              from             to
## 1  Медкибернетика       Раздел 1
## 2  Медкибернетика       Раздел 2
## 3  Медкибернетика       Раздел 3
## 4        Раздел 1      Лекции: 1
## 5        Раздел 1  Семинары: 1-7
## 6        Раздел 2    Лекции: 2-3
## 7        Раздел 2 Семинары: 8-10
## 8        Раздел 3     Лекции 4-5
## 9        Раздел 3 Семинары 11-14
## 10       Раздел 3          Зачет
## 11          Зачет           Тест
## 12          Зачет         Задачи
## 13          Зачет         Беседа
#######################################################
#install.packages("DiagrammeR")
library(DiagrammeR)
plot(courseMC)
SetGraphStyle(courseMC, rankdir = "LR")  #rankdir = "TB"
SetEdgeStyle(courseMC, arrowhead = "vee", color = "grey35", penwidth = 2)
SetNodeStyle(courseMC, fontSize = 20, style = "filled,rounded", shape = "box", fillcolor = "GreenYellow",  fontcolor = "Firebrick", fontname = "helvetica", tooltip = GetDefaultTooltip)
SetNodeStyle(MIAD$"Зачет", fillcolor = "LightBlue", penwidth = "5px")
plot(courseMC)
SetNodeStyle(courseMC$"Раздел 1", inherit = FALSE, fillcolor = "Thistle", 
             fontcolor = "Firebrick", )
plot(courseMC)
Do(courseMC$leaves, function(node) SetNodeStyle(node, shape = "egg"))
plot(courseMC)
#plot(as.dendrogram(CreateRandomTree(nodes = 7)), center = TRUE)

#используя networkD3:(вы можете трогать эти штуки и перетаскивать их, не стесняйтесь!)

#install.packages("networkD3")
library(networkD3)
MCNetwork <- ToDataFrameNetwork(courseMC, "name")
simpleNetwork(MCNetwork[-3], fontSize = 20)
useRdf <- read.csv("D:/R/Tree/useR2020.csv", stringsAsFactors = FALSE, sep=";", header = TRUE)
#define the hierarchy (Session/Group/Speaker)
useRdf$pathString <- paste("useR", useRdf$session, useRdf$group, useRdf$speaker, sep="|")
#convert to Node
useRtree <- as.Node(useRdf, pathDelimiter = "|")

#plot with networkD3
useRtreeList <- ToListExplicit(useRtree, unname = TRUE)
radialNetwork( useRtreeList)