罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经存档,不会被更新。

用MATLAB可视化Facebook网络

当我的客人的一个博客,古原发布,我们可以预测分手吗?社会网络分析和MATLAB,他有几个新问题图和网络算法介绍了MATLAB在R2015b功能。他想做一个后续的帖子来解决其中的一些问题。

内容

读者的提问

评论部分我最近发布的关于社会网络分析,QC问如果有任何方式绘制超大规模网络与均匀度(> 10000个节点),和克里斯汀Tobler请提供一个链接到一个数据集和例子。我想在她的评论在这篇文章中构建。

在MATLAB绘制大规模网络

可以MATLAB绘制大规模网络超过10000节点?先复制克里斯汀的例子,阴谋与10443个节点和20650个边缘图,代表了一个l型网格。

n = 120;一个= delsq (numgrid (“L”,n));图G = (,“OmitSelfLoops”);情节(G)标题(“有10443个节点和20650边的图”)

Facebook自我网络数据集

对于数据集,克里斯汀建议斯坦福大型网络数据集收集。我决定带她到她的建议使用它Facebook的数据集。这个数据集包含匿名调查参与者的个人朋友之间的连接网络。这种个人网络表示关注节点的友谊,被称为“自我”节点,网络因此被称为“自我”网络。

让我们“facebook.tar下载。广州”,其内容提取到一个“facebook”目录在当前文件夹。每个文件从一个节点id和结尾后缀“。圈”,或“.edges”。这是ids的“自我”节点。我们可以运行loadFBdata.m从这些文件加载数据。我只会重新加载数据预处理

clearvars%明显工作区% loadFBdata %运行脚本负载脸谱网%或加载垫文件
你的变量是:圆egofeat壮举图形边缘egoids featnames

可视化结合自我网络

我们先把所有10个自我网络变成一个并在一个单一的形象情节。这种结合网络稍微少于4000个节点,但超过84000边缘。它还包括一些自我节点,这意味着这些调查参与者并不是完全无关的。

边梳= vertcat ({});%结合边缘梳子=排序(梳子、2);%边缘顺序排序梳子=独特(梳子、“行”);%删除重复的梳子=梳+ 1;%转换为1-indexingcombG =图(梳(:1),梳子(:,2));%创建无向图notConnected =找到(学位(combG) = = 0);%找到无关的节点combG = rmnode (combG notConnected);%删除它们edgeC = [。7 7 7];%灰色图H =情节(combG,“MarkerSize”,1“EdgeColor”edgeC,%绘制图“EdgeAlpha”,0.3);标题(“自我网络相结合”)%添加标题sprintf(文本(17日13日“总% d节点”,%添加节点度量numnodes (combG)))文本(sprintf(17日12日“总% d边缘”,%增加边缘度量numedges (combG)))文本(17日,11日,自我节点显示为红色的)%增加边缘度量自我=相交(egoids + 1,独特(梳理));%图中找到自我突出(H,自我,“NodeColor”,“r”,“MarkerSize”3)%突出红色

想象一个自我网络度的中心

一个最基本的分析可以执行一个网络链接分析。让我们找出谁是最好连接图。使它容易理解,我们可以改变颜色的连接数,也称为学位,因此这是一个度量称为学位中心。前三度突出显示节点的情节和他们都属于同一个集群。他们非常紧密相连的朋友!

请注意自我节点不包括在这个分析中readme-Ego.txt说:

“自我”节点出现(在边缘列表),但假定他们遵循每一个节点id出现文件。

天性总是会自我节点顶部节点,所以没有点包括它。

idx = 2;%自我选择一个节点egonode = num2str (egoids (idx));%自我节点名称字符串G =图{idx};%的图度= (G)程度;%得到节点度notConnected =找到(度< 2);%弱连接节点度(notConnected) = [];%滴度G = rmnode (G, notConnected);%下降图[~,排名]=排序(度,“下”);%被程度排名超越= G.Nodes.Name(排名(1:3));%得到最高3节点名图colormap很酷的%设置彩色地图H =情节(G,“MarkerSize”日志(度),%节点在对数尺度大小“NodeCData”度,%节点颜色的程度“EdgeColor”edgeC,“EdgeAlpha”,0.3);labelnode (H,超越,{“# 1”,“2号”,“# 3”});%的标签上面3节点标题({sprintf (“自我的网络节点% d ',%添加标题egoids (idx));“彩色的学位中心”})文本(1,3,的前三个节点:strjoin(超越)])%注释H = colorbar;%添加colorbarylabel (H,“度”)%添加ylabel度量

自我网络度分布

让我们看看柱状图自我之间的度网络我们只是看起来和合并后的自我网络。人活跃在Facebook将会比那些没有边缘,但少数人有大量的度和大多数小数量的度,和差异很大,看上去指数。

图直方图(学位(combG))%绘制柱状图持有%不覆盖直方图(学位(G))%重叠直方图持有%恢复默认包含(“度”)%添加x轴标签ylabel (节点的数量)%添加y轴标签标题(度分布的)%添加标题传奇(“合并后的自我网络”,%添加传奇sprintf (“自我的网络节点% d 'egoids (idx)))文本(150700年中等程度的)%注释文本(160650年,sprintf (‘*节点% d: % d ',%注释egoids (idx),中等(学位(G))));文本(160600年,sprintf (‘*组合:% d ',%注释中位数(学位(combG))));

你会注意到中等度似乎有点小。这是因为那些从节点包含在自我网络只包含节点连接到自我的节点。所以我们不知道其他节点不连接到自我节点(朋友的朋友)。如果算上的节点数量在每个自我网络中,您可以看到每个自我节点的度,因为自我节点应该是连接到所有其他节点在各自自我网络。中位数是1404。这是大于或小于的数量你的Facebook上的朋友吗?

度= cellfun (@ (x) numnodes (x)图);%度图median_deg =值(度)%的平均度
median_deg = 1404

最短路径

我们看着度作为指标来评估节点,节点,它是有意义的——更多的朋友,更好的连接。另一个常见的指标是最短路径。虽然只度测量直接连接,最短路径考虑多少啤酒花在最低限度你需要遍历从一个节点到另一个地方。让我们来看一个示例之间的最短路径上节点1888年和483年另一个节点。

(路径,d) = shortestpath (G,超越{1},“483”);%得到最短路径图H =情节(G,“MarkerSize”,1“EdgeColor”,edgeC);%绘制图突出(H,路径,“NodeColor”,“r”,%突出路径“MarkerSize”3,“EdgeColor”,“r”,“线宽”,2)labelnode (H,路径,[{“顶级节点”}路径(2:结束)])%标签节点标题(483年顶级节点和节点之间的最短路径的)%添加标题文本(1、3、sprintf (“距离:% d跳”d))%注释

亲密关系中心

距离最短路径可以用来衡量计算接近中心,定义维基百科。让我们重新加载预先计算距离使用spdist我写的函数。与那些得分高亲密的你想先当你想通过你的自我网络新闻传播。

负载经销亲密= 1. /笔(经销);%计算亲密[~,排名]=排序(亲密,“下”);%被亲密的排名超越= G.Nodes.Name(排名(1:3));%得到最高3节点名图colormap很酷的%设置彩色地图H =情节(G,“MarkerSize”亲密* 10000,%节点大小亲密“NodeCData”亲密,%节点颜色由亲密“EdgeColor”edgeC,“EdgeAlpha”,0.3);labelnode (H,超越,{“# 1”,“2号”,“# 3”});%的标签上面3节点标题({sprintf (“自我的网络节点% d ',%添加标题egoids (idx));亲密的有色中心”})文本(1,3,的前三个节点:strjoin(超越)])%注释H = colorbar;%添加colorbarylabel (H,“亲密”)%添加ylabel度量

你能使用自己的Facebook的数据吗?

希望这篇文章提供了足够的基础进一步探索快速收集数据集。你可能还想试试自己的数据。不幸的是,你不能分析自己的Facebook朋友图因为Facebook停止这个API服务。但是,您可以使用应用程序Netvizz提取一个“页面像网络”,代表通过喜欢Facebook页面连接。这是Facebook页面的情节显示网络连接通过喜欢使用MATLAB页面预计算图。因为这是一个有向图,我们将使用入度作为指标。这意味着我们只统计页面时喜欢到其他页面,但不喜欢别人。

负载fbpagegraph%重新加载数据度=入度(G);%得到度[~,排名]=排序(度,“下”);%由度等级top5 = G.Nodes.Name(排名(1:5));%获得前五名图colormap很酷的%设置colormap冷却H =情节(G,“MarkerSize”日志(度+ 2)* 2,%对数尺度节点入度的大小“NodeCData”度,%颜色入度“EdgeColor”edgeC,“EdgeAlpha”,0.3);labelnode (H,MATLAB的,MATLAB的)%突出MATLABlabelnode (H, top5, {“:杂志”,美国国家海洋和大气管理局的,“拥有核武器的国家”,“罗马创造者大会”,“创造者大会”})H = colorbar;%添加colorbarylabel (H,“度”)%增加指标标题(Facebook页面像网络的入度的)文本(-2.8,3.5,的网络连接的页面通过喜欢(导演)安)={实验室,top5};%生成标签文本(pos (: 1), pos (:, 2), strcat(安{:}))%添加注解

总结

我们只触及表面的吸附——只是一个自我网络集合的Facebook,每个带有更多的匿名元数据,如教育、家乡等,你可以找出结合紧密的朋友通过分析常见的属性。此外,提前收集还包括其他来源的数据集,主苏格兰Twitter和Google +。您还可以使用Netvizz Facebook页面你喜欢上提取数据。这些数据集和玩让我们知道你发现什么!




发表与MATLAB®R2015b


评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。