Mad*_*ern 31 python graph social-graph
我需要定义一个社交网络,分析它并绘制它.我可以手工绘制并手工分析(计算各种指标).但我不想重新发明轮子.
我曾尝试使用matplotlib,但我需要以交互方式使用它,并在几行中告诉它如何加载数据,然后调用渲染函数,将图形渲染为SVG.
如何以所描述的方式可视化社交网络?
psy*_*dia 28
networkx是一个非常强大而灵活的Python库,用于处理网络图.定向和非定向连接可用于连接节点.可以通过添加节点然后连接它们的边来构建网络,或者简单地通过列出边对(可以自动创建未定义的节点)来构建网络.创建后,节点(和边)可以使用任意标签进行注释.
虽然networkx可用于可视化网络(请参阅文档),但您可能更喜欢使用网络可视化应用程序,例如Gephi(可从gephi.org获得).networkx支持多种导入和导出格式.如果使用GraphML等格式导出网络,导出的文件可以轻松加载到Gephi中并在那里可视化.
import networkx as nx
G=nx.Graph()
G.add_edges_from([(1,2),(1,3),(1,4),(3,4)])
G
>>> <networkx.classes.graph.Graph object at 0x128a930>
G.nodes(data=True)
>>> [(1, {}), (2, {}), (3, {}), (4, {})]
G.node[1]['attribute']='value'
G.nodes(data=True)
>>> [(1, {'attribute': 'value'}), (2, {}), (3, {}), (4, {})]
nx.write_graphml(G,'so.graphml')
Run Code Online (Sandbox Code Playgroud)
key*_*ser 14
有三个答案提到Networkx和Gephi,但没有人提到图形工具.主要区别在于算法是用C++实现的,与Networkx相比,性能提升了.
而且,它还涵盖了可视化.从网站:
使用各种算法和输出格式(包括屏幕)方便地绘制图形.Graph-tool有自己的布局算法和基于cairo和GTK +的多功能交互式绘图程序,但它也可以作为优秀的graphviz包的非常舒适的界面.
这是一个来自文档的简洁例子(还有很多):

(阻止政治博客网络的分区).
而且,它的代码:
>>> g = gt.collection.data["polblogs"]
>>> g = gt.GraphView(g, vfilt=gt.label_largest_component(gt.GraphView(g, directed=False)))
>>> state = gt.BlockState(g, B=g.num_vertices(), deg_corr=True)
>>> state = gt.multilevel_minimize(state, B=2)
>>> gt.graph_draw(g, pos=g.vp["pos"], vertex_fill_color=state.get_blocks(), output="polblogs_agg.pdf")
<...>
Run Code Online (Sandbox Code Playgroud)
(注意:在这个例子中,每个节点的位置是预先确定的,因此不必运行布局算法)
这是使用相同数据的另一个例子(结果令人难以置信):http: //ryancompton.net/2014/10/05/graph-tools-visualization-is-pretty-good/
| 归档时间: |
|
| 查看次数: |
43630 次 |
| 最近记录: |