networkD3包小试牛刀

3 篇文章 0 订阅
1 篇文章 0 订阅

力导向网络图

这种图采用物理上的弹簧模型,将节点之间想象成是用弹簧连接的,然后把这些用弹簧连接的节点扔到桌面上,让这些弹簧自己弹啊弹,弹啊弹,最后总能停下来,达到一个平衡状态。这个状态下的节点连接图,能力最小,线和线之间的交叉最小。这种方法的学名叫spring-embedder 或者 force-directed。

拖动中间的图里的任意节点,整个网络就会被拖动,并达到新的平衡位置。
从图里,我们可以大致看出不同的群体,群体里的人关系紧密,而不同群体之间的关系比较松散。群体分析也是网络数据可视化的一个主要目的。


library(networkD3)

data(MisLinks, MisNodes)

(1)MisNodes数据集

MisNodes是77个人,编号是0~76,这些人分成10组,组编号是1~10
> summary(MisNodes)
          name        group       
 Anzelma    : 1   Min.   : 0.000  
 Babet      : 1   1st Qu.: 2.000  
 Bahorel    : 1   Median : 4.000  
 Bamatabois : 1   Mean   : 4.091  
 BaronessT  : 1   3rd Qu.: 5.000  
 Blacheville: 1   Max.   :10.000  
 (Other)    :71

> dim(MisNodes)
[1] 77  2


注意:group这个属性要用活,比如说表示财富群组、年龄群组等。

(2)MisLinks数据集

MisLinks表示这77个人254次联系,source表示主动联系的人,target表示被动联系的人,value表示每次联系的权值。

> dim(MisLinks)
[1] 254   3

source    target    value
1    1    0    1
2    2    0    8
3    3    0    10
4    3    2    6

5    4    0    1

注意:source和target都是MisNodes中的序号。

(3)绘制力导向网络图forceNetwork

节点表示接触的双方,连线的粗细表示接触的权值。

forceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source",
             Target = "target", Value = "value", NodeID = "name",
             Group = "group", opacity = 0.4)

新的版本,函数格式有了新的变化,可以增加Legend等:

forceNetwork(Links, Nodes, Source, Target, Value, NodeID, Nodesize, Group,
height = NULL, width = NULL, colourScale = JS("d3.scale.category20()"),
fontSize = 7, linkDistance = 50,
linkWidth = JS("function(d) { return Math.sqrt(d.value); }"),
radiusCalculation = JS(" Math.sqrt(d.nodesize)+6"), charge = -120,
linkColour = "#666", opacity = 0.6, zoom = FALSE, legend = FALSE)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值