本文主要是介绍python图工具中基于随机块模型动态网络社团检测网络图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是“2004年大选”中的博客网络图,但是边缘束是使用随机块模型确定的(注:下图与图相同(即,布局和数据相同))。 Tiago论文中的5-我只是在上面放了一个黑色背景 。
相关视频:复杂网络分析CNA简介与R语言对婚礼数据聚类(社区检测)和可视化|数据分享
复杂网络分析CNA简介与R语言对婚礼数据聚类(社区检测)和可视化
边缘配色方案与Adamic和Glance的原始论文中的相同,即每个节点对应一个博客URL,颜色反映取向,红色代表保守派,蓝色代表自由派。橙色边从自由派博客到保守派博客,紫色边从保守派到自由派(参见Adamic和Glance中的图1)。
每个博客的网址都在每个节点旁边绘制,这是一个特写:
使颜色正确需要一些调整:
red_blue_map = {1:(1,0,0,1),0:(0,0,1,1)}
plot_color = g.new_vertex_property('vector<double>')
g.vertex_properties['plot_color'] = plot_color
为了使用分层边缘捆绑算法,我们首先需要进行聚类。
这些聚类用于形成一个层次结构,该层次结构可以轻松确定标准的树布局(如下图所示)。通过沿树内插来绘制层次边缘束。
这是上图使用的树:
最后,我们设置文本旋转并保存图形。
部分代码片段:
# -*- coding: utf-8 -*-
import graph_tool.all as gt
import mathg = gt.collection.data["polblogs"] # http://www2.scedu.unibo.it/roversi/SocioNet/AdamicGlanceBlogWWW.pdf
print(g.num_vertices(), g.num_edges())#减少到仅连接的节点
g = gt.GraphView(g,vfilt=lambda v: (v.out_degree() > 0) and (v.in_degree() > 0) )
g.purge_vertices()print(g.num_vertices(), g.num_edges())#使用1->共和党人,2->民主党人
red_blue_map = {1:(1,0,0,1),0:(0,0,1,1)}
plot_color = g.new_vertex_property('vector<double>')
g.vertex_properties['plot_color'] = plot_color
for v in g.vertices():plot_color[v] = red_blue_map[g.vertex_properties['value'][v]]gt.graph_draw(g, pos=pos, vertex_fill_color=g.vertex_properties['plot_color'],vertex_color=g.vertex_properties['plot_color'],edge_control_points=cts,vertex_size=10,vertex_text=g.vertex_properties['label'],vertex_text_rotation=g.vertex_properties['text_rot'],vertex_text_position=1,vertex_font_size=9,edge_color=g.edge_properties['edge_color'],vertex_anchor=0,bg_color=[0,0,0,1],output_size=[4024,4024],output='polblogs_blockmodel.png')
这篇关于python图工具中基于随机块模型动态网络社团检测网络图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!