Data organization
Start from 0!!!
nrow(Nodes)
## [1] 47
for (i in 1:47) {
Edges$Source = gsub(Nodes$name[i], i-1, Edges$Source)
}
for (i in 1:47) {
Edges$Target = gsub(Nodes$name[i], i-1, Edges$Target)
}
head(Nodes)
## name group id
## 1 Aeromonadaceae Proteobacteria 1
## 2 Alteromonadaceae Proteobacteria 2
## 3 Amoebophilaceae Bacteroidota 3
## 4 Arcobacteraceae Campilobacterota 4
## 5 Ardenticatenaceae Chloroflexi 5
## 6 Bacillaceae Firmicutes 6
head(Edges)
## Source Target corr
## 1 0 7 1
## 2 0 21 1
## 3 0 37 -1
## 4 0 16 -1
## 5 2 45 1
## 6 2 19 1
Add line weight
weight = read.csv('yuanhe_Edges.csv')
Edges = cbind(Edges, weight$Weight)
colnames(Edges) = c("Source", "Target", "corr", "weight")
# 权重均为正数
Edges$weight = abs(Edges$weight)
Edges$weight = Edges$weight*3
Set line color
# 利用corr列设置颜色 区分正负相关 666
mycolors = ifelse(Edges$corr == 1, "#FF6A6A", "#7CCD7C")
Set node size
# 利用corr列设置颜色 区分正负相关 666
Nodes$size = rep(15, 47)
head(Nodes)
## name group id size
## 1 Aeromonadaceae Proteobacteria 1 15
## 2 Alteromonadaceae Proteobacteria 2 15
## 3 Amoebophilaceae Bacteroidota 3 15
## 4 Arcobacteraceae Campilobacterota 4 15
## 5 Ardenticatenaceae Chloroflexi 5 15
## 6 Bacillaceae Firmicutes 6 15
Load required packages
library(networkD3)
library(htmlwidgets)
##
## Attaching package: 'htmlwidgets'
## The following object is masked from 'package:networkD3':
##
## JS
Plot!
# 设置clickAction
MyClickScript <- 'alert("Have a rest~")'
# bounded为是否有边界,这里为F;opacity为透明度;charge为斥力大小;显示图例;可以放大或缩小
interactivenetwork = forceNetwork(Links = Edges, Nodes = Nodes, Source = "Source", Target = "Target", NodeID = "name", Group = "group", opacity = 0.8, bounded = F, legend = T, zoom = T, opacityNoHover = TRUE, fontSize = 15, clickAction = MyClickScript, charge = -300, Nodesize = "size", Value = 'weight', linkColour = mycolors)
interactivenetwork
# 通过拖动不同节点可以看出:重要的节点对整个网络结构的影响较大
# 保存为网页
saveWidget(interactivenetwork, "example.html")