如何将igraph对象转换和配置为JSON
我使用了如何将igraph对象转换和配置为JSON,r,json,igraph,netjson,R,Json,Igraph,Netjson,我使用了d3r包将igraph对象转换为JSON格式,如下所示: # create small world network net <- sample_smallworld(size = 8, dim = 1, nei = 1, p = 0.33) # convert to json with directional edges data_json <- d3_igraph(as.directed(net)) 这几乎就是我想要的,但我需要配置两件事: 我希望节点
d3r
包将igraph
对象转换为JSON格式,如下所示:
# create small world network
net <- sample_smallworld(size = 8, dim = 1, nei = 1, p = 0.33)
# convert to json with directional edges
data_json <- d3_igraph(as.directed(net))
这几乎就是我想要的,但我需要配置两件事:
{“source”:1,“target”:2}
,而不是{“source”:“1”,“target”:“2”}
当然,对于这样的小型网络,我可以手动完成这项工作,但对于大型网络来说,这既繁琐又不可扩展。有没有更好的方法可以做到这一点,那就是
R
?将json转换为R列表并在回写json之前对数据进行必要的更改非常简单。下面是一个函数,它应该使用jsonlite
软件包中的工具来完成d3\u igraph
的输出:
fix_d3_json <- function(json)
{
dj <- jsonlite::fromJSON(data_json)
dj$nodes$id <- as.numeric(dj$nodes$id) + 1
dj$links[[1]] <- as.numeric(dj$links[[1]]) + 1
dj$links[[2]] <- as.numeric(dj$links[[2]]) + 1
jsonlite::toJSON(dj)
}
fix_d3_json{“name”:[“Watts Strogatz random graph”],“dim”:[1],“size”:[8],“nei”:[1],
#>“p”:[0.33],“循环”:[false],“多个”:[false]}
1。在制作JSON之后,您不能只向每个ID添加1吗?是的,这是我想做的,但是如何做呢?一种可能是直接使用igraph编辑节点ID。可能是使用set_vertex_attr(“id”,value=1:8),我尝试了net%set_vertex_attr(“id”,value=c(1:8))
,但结果并不理想。虽然您的输出看起来完全正确,但我必须在函数中做一个小小的更改,才能让我完成这项工作:fix\u d3\u json
fix_d3_json <- function(json)
{
dj <- jsonlite::fromJSON(data_json)
dj$nodes$id <- as.numeric(dj$nodes$id) + 1
dj$links[[1]] <- as.numeric(dj$links[[1]]) + 1
dj$links[[2]] <- as.numeric(dj$links[[2]]) + 1
jsonlite::toJSON(dj)
}
library(igraph)
library(d3r)
# create small world network
net <- sample_smallworld(size = 8, dim = 1, nei = 1, p = 0.33)
# convert to json with directional edges
data_json <- d3_igraph(as.directed(net))
# Fix json
data_json <- fix_d3_json(data_json)
data_json
#> {"nodes":[{"id":1},{"id":2},{"id":3},{"id":4},{"id":5},{"id":6},{"id":7},
#> {"id":8}],"links":[{"source":1,"target":6},{"source":1,"target":2},
#> {"source":2,"target":3},{"source":3,"target":4},{"source":2,"target":6},
#> {"source":3,"target":6},{"source":6,"target":7},{"source":1,"target":7},
#> {"source":6,"target":1},{"source":2,"target":1},{"source":3,"target":2},
#> {"source":4,"target":3},{"source":6,"target":2},{"source":6,"target":3},
#> {"source":7,"target":6},{"source":7,"target":1}],"attributes":
#> {"name":["Watts-Strogatz random graph"],"dim":[1],"size":[8],"nei":[1],
#> "p":[0.33],"loops":[false],"multiple":[false]}}