使用igraph对象调用graphjs时无法查看箭头方向
解决threejs的graphjs()不显示有向图箭头的问题
我懂你遇到的困扰——用igraph自带的plot()函数能清晰看到有向图的箭头,但切换到threejs包的graphjs()时,箭头就凭空消失了。别担心,这不是你的代码写错了,只是graphjs()默认不会启用有向图箭头的渲染,我们只需要调整几个参数就能搞定。
问题根源
graphjs()函数的directed参数默认值是FALSE,哪怕你传入的igraph对象是有向图,它也不会自动识别并渲染箭头。我们需要手动开启这个参数。
修改后的代码示例
# 重现你的图构建步骤 mat <- cor(t(mtcars[,c(1,3:6)])) mat[mat < 0.995] <- 0 net <- graph_from_adjacency_matrix(mat, weighted=T, mode="directed", diag=F) # 开启箭头渲染并调整大小 graphjs(net, directed = TRUE, arrowsize = 0.8)
参数说明
directed = TRUE:告诉graphjs这是一个有向图,需要渲染每条边的箭头arrowsize = 0.8:控制箭头的大小,你可以根据可视化需求调整这个数值(比如改成1.0会更大,0.5会更小)
如果你的边带有权重,还可以额外添加edge.weight = E(net)$weight参数,让边的粗细和权重关联,进一步增强可视化效果:
graphjs(net, directed = TRUE, arrowsize = 0.8, edge.weight = E(net)$weight)
内容的提问来源于stack exchange,提问作者BigDataScientist
相关产品推荐
相关产品推荐

