我需要为消费者 - 品牌关系创建一个二分图。
这是我的示例数据:
datf <- data.frame(Consumers = c("A", "B", "C", "D", "E"),
Brands = c("Costa", "Starbucks", "Cafe2U", "Costa", "Costa"))
以下代码为我提供了一个网络。但我不确定如何为标签消费者和品牌添加节点类型属性:
library(igraph)
dat=read.csv(file.choose(),header=TRUE)
el=as.matrix(dat)
el[,1]=as.character(el[,1])
el[,2]=as.character(el[,2])
g=graph.edgelist(el,directed=FALSE)
我想创建一个带有边缘的二分图,将每个消费者与他们喜欢的品牌联系起来。理想情况下,节点将标记为文本。
您能否使用library(igraph)
告诉我如何执行此操作?
答案 0 :(得分:2)
Shizuka Lab处的此资源对于使用igraph
探索R中的二分网络非常有用。简而言之:
library(igraph)
# Your matrix containing consumer choice by brands
m = matrix(data = sample(0:1, 25, replace = TRUE), nrow = 5, ncol = 5)
colnames(m) = c("A", "B", "C", "D", "E")
rownames(m) = c("Costa", "Starbucks", "Cafe2U", "Petes", "Philz")
# Convert it to a bipartitie network
bg = igraph::graph.incidence(m)
bg
# See the vertex attributes
V(bg)$type
V(bg)$name
# Plot the network
shape = ifelse(V(bg)$type, "circle", "square") # assign shape by node type
col = ifelse(V(bg)$type, "red", "yellow") # assign color by node type
plot(bg, vertex.shape = shape, vertex.color = col)