我有以下格式的CSV:
idA,idB,重量,标签A
其中idA和idB是源节点和目标节点的ID,labelA是节点idA的标签。
我要实现的是使用igraph绘制图形,其中 每个顶点而不是vertexId都有标签。 这是我到目前为止所做的:
library('igraph')
graphData = read.csv(file.choose(), header = FALSE, sep=";")
graphLabels = unique(graphData[,c(1,4)])
colnames(graphLabels) = c("id", "label")
colnames(graphData) = c("idA", "idB", "weight")
graphData_clean = graphData
graphData_clean[4] = NULL
graphData = graphData[-1, ]
所以我试图做的是创建一个新的数据框,该数据框仅包含每个边缘的id和权重,另一个包含id和标签。
现在,我设法使用以下代码绘制图形:
graphData_Matrix <- graphData
graphData_Matrix = as.matrix(graphData_Matrix)
g = graph.edgelist(graphData_Matrix[,1:2])
E(g)$weight = as.numeric(graphData_Matrix[,3])
g <- as.undirected(g)
plot(g,layout=layout.fruchterman.reingold,edge.width=E(g)$weight/2)
但是它绘制图形的ID,而不是标签(我删除了)。 现在,标签数据框(graphLabels)的格式为:
id,标签
现在我想要的是将正确的标签关联到相应的节点。
如何实现呢?
我尝试了不同的方法,但是仍然没有成功。用相关标签替换顶点ID的正确方法是什么?
我也尝试使用visNetwork,但是鉴于图形的大小,它不会打印任何内容。