如何在d3.js中使用graphml文件? [我想绘制一个力导向图]
将文件转换为.json更简单吗?怎么样 ?我找不到转换器(我找到了一个python转换器,但我不是python用户)
是否可以直接使用graphml文件?可能与d3.xml?
注意: graphml看起来像这样
<graph id="G" edgedefault="directed">
<node id="n0">
<data key="v_name">JohnMaynardKe...</data>
<data key="v_label">John Maynard Ke...</data>
<data key="v_size">4</data>
<data key="v_label.cex">0.3</data>
<data key="v_frame.color">#ffffff00</data>
<data key="v_color">#54FF00CC</data>
</node>
<node id="n1">
<data key="v_name">JosephA.Schum...</data>
<data key="v_label">Joseph A. Schum...</data>
<data key="v_size">4</data>
<data key="v_label.cex">0.3</data>
<data key="v_frame.color">#ffffff00</data>
<data key="v_color">#54FF00CC</data>
</node>
<edge source="n0" target="n1">
<data key="e_nombre">2</data>
<data key="e_width">2</data>
<data key="e_arrow.size">0</data>
<data key="e_color">#00000021</data>
</edge>
<edge source="n0" target="n7">
<data key="e_nombre">2</data>
<data key="e_width">2</data>
<data key="e_arrow.size">0</data>
<data key="e_color">#00000021</data>
</edge>
...
答案 0 :(得分:2)
继@fccoelho后,Anders Eriksen (anderser)汇总了一个将GraphML XML转换为d3 JSON format的示例,其中包含here ({ {3}})
GitHub gist&lt; - GraphML-to-d3_JSON
Python脚本利用convert.py和Python-louvain库。
答案 1 :(得分:2)
我建议您在json文件中转换graphml文件。我遇到了同样的问题,这是我如何使用python和networkx库在json中转换graphml文件:
fileprivate let imageManager = PHCachingImageManager()
代码中的for循环将您的节点ID转换为数字。这非常重要,因为json最终文件中的源和目标已经是数字(而不是字符)。
答案 2 :(得分:1)
使用Python和networkX,您可以阅读graphml:http://networkx.lanl.gov/reference/generated/networkx.readwrite.graphml.read_graphml.html
然后以各种风格保存为JSON: http://networkx.lanl.gov/reference/readwrite.json_graph.html
答案 3 :(得分:0)
好的,我终于找到了一些方法将图形转换为d3.js兼容的.json http://coulmont.com/blog/2012/11/03/reseau-d3js/ 这是用R和RJSONIO库(注释用法语)完成的
library(RJSONIO)
#creation de la partie qui renseigne les "nodes"
temp<-cbind(V(g2)$name,V(g2)$group)
colnames(temp)<-c("name","group")
js1<-toJSON(temp)
#creation de la partie qui renseigne les "liens"
write.graph(g2,"Desktop/edgelist.csv",format="edgelist")
edges<-read.csv("Desktop/edgelist.csv",sep=" ",header=F)
colnames(edges)<-c("source","target")
edges<-as.matrix(edges)
js2<-toJSON(edges)
#concatenation des deux parties
reseau<-paste('{"nodes":',js1,',"links":',js2,'}',sep="")
write(reseau,file="Desktop/reseau.json")