You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中基于DataFrame构建店铺关联网络图遇问题,需按经理数设节点大小

在R中基于店铺-经理数据构建网络图

步骤1:准备环境和数据

先安装并加载igraph包,再构造你的示例数据:

# 安装igraph包(首次运行需执行)
install.packages("igraph")
library(igraph)

# 创建目标数据框
shop_manager <- data.frame(
  Shop = c("S1", "S1", "S2", "S2", "S3", "S4"),
  Manager = c(34, 12, 11, 34, 34, 50)
)

步骤2:生成店铺间的关联边

按经理分组,找出每组内共享经理的店铺对,最后去重避免重复边:

# 按经理拆分店铺列表,只保留有多个店铺共享的经理组
manager_groups <- split(shop_manager$Shop, shop_manager$Manager)
valid_groups <- manager_groups[sapply(manager_groups, length) >= 2]

# 生成每组内店铺的两两组合,转成边数据框并去重
edges <- do.call(rbind, lapply(valid_groups, function(x) t(combn(x, 2))))
edges <- unique(data.frame(V1 = edges[,1], V2 = edges[,2], stringsAsFactors = FALSE))

步骤3:计算节点大小(按店铺拥有的经理数)

统计每个店铺的经理数量,作为节点大小的依据:

# 统计每个店铺的经理数量
node_sizes <- as.data.frame(table(shop_manager$Shop), stringsAsFactors = FALSE)
colnames(node_sizes) <- c("Shop", "size")

步骤4:构建并绘制网络图

用igraph创建无向图,设置节点大小、样式等参数完成绘图:

# 从边和节点数据创建图对象
g <- graph_from_data_frame(d = edges, vertices = node_sizes, directed = FALSE)

# 绘制网络图,可按需调整参数
plot(g,
     vertex.size = V(g)$size * 10,  # 放大节点大小,系数可自行修改
     vertex.label.cex = 1.2,        # 标签字号
     edge.color = "gray",           # 边的颜色
     vertex.color = "#4287f5",      # 节点填充色
     main = "店铺共享经理关联网络图")

最终效果:

  • S1、S2、S3因共享经理34互相连接,S4为孤立节点
  • 节点大小对应店铺的经理数量:S1、S2有2个经理,节点最大;S3、S4各1个经理,节点较小

内容的提问来源于stack exchange,提问作者k34l

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:33:45