R语言实现:为网络图添加矩阵中的边权重标签
给visNetwork网络图添加边权重标签的实现方法
直接通过以下两步修改你的代码就能实现需求:
- 给edges数据框添加label列
把edges$weight格式化后(比如保留3位小数)赋值给edges$label,visNetwork会自动识别该列作为边的标签文本:
# 格式化权重为保留3位小数的字符串,作为边标签 edges$label <- round(edges$weight, 3) %>% as.character()
- 在visEdges中配置标签显示参数
在visEdges函数里添加标签样式设置,调整字体大小、颜色等,确保标签清晰可见:
visEdges( arrows = list(to = list(enabled = TRUE)), label = list( fontSize = 12, color = "#333333" ) )
修改后的完整代码
library(tidyverse) library(visNetwork) library(htmlwidgets) set.seed(123) mat <- matrix(runif(19*20), nrow = 19, ncol = 20) mat <- t(apply(mat, 1, function(x) x/sum(x))) mat <- rbind(mat, c(rep(0, 19), 1)) nodes <- data.frame(id = 1:20) edges <- data.frame(from = sample(1:20, 100, replace = TRUE), to = sample(1:20, 100, replace = TRUE)) nodes$shape <- 'circle' edges$weight <- apply(edges, 1, function(x) mat[x["from"], x["to"]]) # 新增:添加边标签列 edges$label <- round(edges$weight, 3) %>% as.character() # 创建网络图并配置边标签样式 network <- visNetwork(nodes, edges) %>% visEdges( arrows = list(to = list(enabled = TRUE)), label = list( fontSize = 12, color = "#333333" ) ) %>% visIgraphLayout(layout = "layout_in_circle") # 查看网络图 network
说明
- 若需调整小数位数,修改
round()函数的第二个参数即可(比如改成2就是保留2位小数) - 可根据需求调整
label里的fontSize、color等参数,让标签更贴合可视化需求
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

