3 【MATLAB】 Graph Object: 展示关系网

于是我们取出这462位关注者,建立子图 。在中可以很方便的用功能从图中剥离出子图 。
realFollower = subsG.findnode(ids);followerGraph = subgraph(subsG,realFollower)followerGraph = digraph with properties:Edges: [990×1 table]Nodes: [462×3 table]hsub = plot(followerGraph,'layout','force')
现在再来看看这462位关注者之间的关系,是不是比之前的清晰很多?
然而我们还可以做的更好 。
我们的数据是多维的,比如每个关注者有自己的粉丝,如何在一个2维的图上显示出这个信息呢?
我们可以用每个节点的大小来代表他/她的粉丝数
【3【MATLAB】 Graph Object: 展示关系网】hsub.MarkerSize = log(str2double(followerGraph.Nodes.Weight)+1.1)*2;
看起来不错,如果同时把节点的颜色变成他/她的粉丝数呢?
hsub.NodeCData=http://www.kingceram.com/post/str2double(followerGraph.Nodes.Weight);
瞬间变的清晰明了了有没有?突出一个大V
然而myc很快的意识到,粉丝数的多少对于专栏来说并没有什么大用 。倒是一个关注者在专栏内有多少个其他关注者粉丝是个很有意思的数据 。我们用图的入度来表示一个节点有多少个粉丝 。

3  【MATLAB】 Graph Object: 展示关系网

文章插图
hsub.NodeCData=http://www.kingceram.com/post/indegree(followerGraph);
我们可以看到,之前的大V节点在专栏内其实并不是有最多“朋友”的 。当然本来粉丝就少的关注者在专栏内也不会有很多粉丝 。
我们来看看到底是谁在专栏内有最多的关注者 。我们进入模式 。点击最黄的那个节点
hd = datacursormode;
在专栏内有93个粉丝哟,几乎占了462人的20% 。很大程度上可以说有20%的人都是因为他/她而关注专栏的 。
但是默认的给出的信息太生肉了,还带着那个不是给人看的id 。我们来写一个自己的显示的方式
hd.UpdateFcn = @(obj,event_obj) GraphCursorCallback(obj,event_obj,followerGraph);
在回调函数中,显示当前节点的名字,粉丝数,和专栏中的粉丝数
function output_txt = GraphCursorCallback(obj,event_obj,g)% Display the position of the data cursor% objCurrently not used (empty)% event_objHandle to event object% output_txtData cursor text (character vector or cell array of character vectors).h = get(event_obj,'Target');pos = get(event_obj,'Position');ind = find(h.XData =http://www.kingceram.com/post/= pos(1) & h.YData == pos(2), 1);output_txt = {g.Nodes.uName{ind},['Follower ',g.Nodes.Weight{ind}],['Friend in subscriber ',num2str(indegree(g,ind))]};end
再点击那个节点看看 , 原来是
@李崇
,他自己有1000+的粉丝,在专栏中有93个粉丝,说明他粉丝中至少10%的人是和他在上有交集的(大概
的类还提供了方便的高亮功能,比如我们想看我们的第一位关注者
@Yu Jiang
老师在专栏中的粉丝图 。
s= findedge(followerGraph,predecessors(followerGraph,1),1);hsub.highlight(followerGraph.Edges.EndNodes(s,1),followerGraph.Edges.EndNodes(s,2),'EdgeColor','r');
红线连起来的就是
@Yu Jiang
老师魔爪伸向的地方……
有了Graph类方便的可视化系统,我们就可以利用做一些很有趣的事情
比如查看我们的专栏是如何一步步走到今天的 。还记得我们在这篇文章里面建立的关注者追踪系统吗?
我们可以通过来获取专栏关注的实时人数,并把他们的关系图画出来 。
下面就展示了一个非常简单的动画效果 。