python图工具中基于随机块模型动态网络社团检测

原文链接:http://tecdat.cn/?p=7602

这是“政治博客圈和2004年美国大选”中的政治博客网络图,但是边缘束是使用随机块模型确定的(注:下图与图相同(即,布局和数据相同))。 Tiago论文中的5-我只是在上面放了一个黑色背景 。

边缘配色方案与Adamic和Glance的原始论文中的相同,即每个节点对应一个博客URL,颜色反映政治取向,红色代表保守派,蓝色代表自由派。橙色边从自由派博客到保守派博客,紫色边从保守派到自由派(参见Adamic和Glance中的图1)。

颜色方案与原始论文中的颜色方案相同,即每个节点对应一个博客URL,颜色反映政治取向,红色代表保守派,蓝色代表自由派。橙色边从自由派博客到保守派博客,紫色边从保守派到自由派(参见Adamic和Glance中的图1)。绘制了所有1,490个节点和19,090条边。

?

每个博客的网址都在每个节点旁边绘制,这是一个特写:

?

import graph_tool.all as gt
import math

g = gt.collection.data["polblogs"] #  http://www2.scedu.unibo.it/roversi/SocioNet/AdamicGlanceBlogWWW.pdf

使颜色正确需要一些调整:

#use 1->Republican, 2->Democrat
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]]

为了使用分层边缘捆绑算法,我们首先需要进行某种聚类。一种明显的方法是根据其政治隶属关系为每个节点分配一个群集:

这些集群用于形成一个层次结构,该层次结构使人们可以轻松确定标准的树布局(如下图所示)。通过沿树内插来绘制层次边缘束。

这是上图使用的树:

?

最后,我们设置文本旋转并保存图形:

#labels
text_rot = g.new_vertex_property(‘double‘)
g.vertex_properties[‘text_rot‘] = text_rot
for v in g.vertices():
    if pos[v][0] >0:
        text_rot[v] = math.atan(pos[v][1]/pos[v][0])
    else:
        text_rot[v] = math.pi + math.atan(pos[v][1]/pos[v][0])

gt.graph_draw(g, pos=pos,
              vertex_size=10,
              vertex_color=g.vertex_properties[‘plot_color‘],
              vertex_fill_color=g.vertex_properties[‘plot_color‘],
              edge_control_points=cts,
              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.png‘)

如果您有任何疑问,请在下面发表评论。

?

大数据部落 -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务

统计分析和数据挖掘咨询服务:y0.cn/teradat(咨询服务请联系官网客服

?QQ:3025393450

?QQ交流群:186388004 

【服务场景】  

科研项目; 公司项目外包;线上线下一对一培训;数据爬虫采集;学术研究;报告撰写;市场调查。

【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询

欢迎选修我们的R语言数据分析挖掘必知必会课程!

 

原文地址:https://www.cnblogs.com/tecdat/p/11670705.html

时间: 2024-10-01 11:49:26

python图工具中基于随机块模型动态网络社团检测的相关文章

[环境搭建]mininet中实现随机流量模型,20180130

[环境搭建]mininet中实现随机流量模型 本文记录了如何实现"mininet拓扑中任意一台主机以等概率随机向另外一台主机发送一条UDP数据流,并将iperf测试结果自动保存到文件"的方法,概括来说则是"为mininet设置一条可实现上述功能的自定义命令'iperfmulti'". 1.添加自定义函数及自定义命令 使用nano编辑器打开并编辑"***/mininet/net.py"文件,输入命令: nano  ***/mininet/net.p

OpenCV Using Python——RGB颜色空间中的统计肤色模型

RGB颜色空间中的统计肤色模型 1. 统计肤色模型简介 前几篇文章提出的参数肤色模型,由于参数值固定,所以来自测试图像集的分割误差有可能很大(不过在光照足够的情况下已经够用了).对于光线比较昏暗的场合,一般人们不太会训练这样的数据来提取参数,同时光照不足时颜色容易跟背景混在一起,所以做出来效果也不好.在光照昏暗的场合,直接在自然光和复杂背景下分割肤色到现在为止依然是比较困难的事.这里讨论的仅仅是单个像素是否为肤色,如果要求在大面积肤色的背景下分割出手或脸来,这种不依赖上下文的方法就完蛋了. 那么

Python实现RabbitMQ中6种消息模型

RabbitMQ与Redis对比 ? RabbitMQ是一种比较流行的消息中间件,之前我一直使用redis作为消息中间件,但是生产环境比较推荐RabbitMQ来替代Redis,所以我去查询了一些RabbitMQ的资料.相比于Redis,RabbitMQ优点很多,比如: 具有消息消费确认机制 队列,消息,都可以选择是否持久化,粒度更小.更灵活. 可以实现负载均衡 RabbitMQ应用场景 异步处理:比如用户注册时的确认邮件.短信等交由rabbitMQ进行异步处理 应用解耦:比如收发消息双方可以使用

OpenFace库(Tadas Baltrusaitis)中基于Haar Cascade Classifiers进行人脸检测的测试代码

Tadas Baltrusaitis的OpenFace是一个开源的面部行为分析工具,它的源码可以从 https://github.com/TadasBaltrusaitis/OpenFace 下载.OpenFace主要包括面部关键点检测(facial landmard detection).头部姿势估计(head pose estimation).面部动作单元识别(facial action unit recognition).人眼视线方向估计(eye gaze estimation). 编译T

大数据图数据库之离线挖掘计算模型

/* 版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/            author: 张俊林 节选自<大数据日知录:架构与算法>十四章,书籍目录在此 对于离线挖掘类图计算而言,目前已经涌现出众多各方面表现优秀而各具特点的实际系统,典型的比如Pregel.Giraph.Hama.PowerGraph.GraphLab.GraphChi等.通过对这些系统的分析,我们可以归纳出离线挖掘类图计算中一些常见的计算模型. 本节将常见的计算模型分为两类,一类是图编程模型,另一类

fabric.js的简单上手及基于fabric.js的canvas切图工具:1、基本使用及配置

参考链接 Fabric.js 简单介绍和使用 简介 Fabric.js是一个可以简化canvas程序编写的库. Fabric.js为canvas提供所缺少的对象模型, svg parser, 交互和一整套其他不可或缺的工具.基于MIT协议开源,在github上有许多人贡献代码. 为什么选择fabric.js 手上的项目必须使用canvas 原生的canvas API不够友好 用fabric.js实现切图用户体验更好 为项目以后的迭代留下扩展的余地 简单上手 请参考文章开头的参考链接 这里主要介绍

python中基于descriptor的一些概念(上)

@python中基于descriptor的一些概念(上) python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(new-style class) 2.3.1 __init__方法 2.3.2 __new__静态方法 2.4. 新式类的实例 2.4.1 Property 2.4.2 __slots__属性 2.4.3 __getattribute__方法

python中基于descriptor的一些概念(下)

@python中基于descriptor的一些概念(下) 3. Descriptor介绍 3.1 Descriptor代码示例 3.2 定义 3.3 Descriptor Protocol(协议) 3.4 Descriptor调用方法 4. 基于Descriptor实现的功能 4.1 property 4.2 函数和方法,绑定与非绑定 4.3 super 5. 结尾 3. Descriptor介绍 3.1 Descriptor代码示例 class RevealAccess(object):   

《随机RFM模型及其在零售顾客价值识别中的应用》整理

根据<随机RFM模型及其在零售顾客价值识别中的应用>进行摘抄,整理,以备后期借鉴使用 一.问题与思路 问题:对顾客价值进行准确的识别与评估 输入:流失时间(最近一次购买时间)(Recency,R).购买次数(Frequency,F).购买金额(Monetary,M) 输出:顾客未来反应的可能性 思路: 1.利用随机概率模型建立起R-F-M变量与顾客未来购买行为反应间的联系 通常都是利用泊松(Poisson)或指数(Exponential)分布捕捉顾客购买时间以及 次数,再利用Gamma分配捕捉