使用动态网络可视化更改节点颜色

时间:2021-03-25 06:56:39

标签: r animation sna statnet

我正在尝试创建一个网络动画,显示节点如何随时间改变状态。用例是 Covid-19 的联系人跟踪。我使用基于代理的模型来模拟 Covid-19 传播。我从中提取了我的联系网络。我正在努力弄清楚 tsna 包如何改变每个时间片的节点颜色(疾病状态)。这是我的数据和渲染尝试:

# load libraries

require(sna)
require(tsna)
require(ndtv)

# get data

url <- "https://github.com/aterhorst/data/blob/master/dynamic_network.Rdata?raw=true"
download.file(url, destfile= "data/dynamic_network.Rdata", mode = "wb")

# load data

load("data/dynamic_network.Rdata")

# create a dynamic network object

nd <-networkDynamic(edge.spells = edges,
                    vertex.spells = nodes)

# render dynamic network object

compute.animation(nd,
  animation.mode = "kamadakawai",
  slice.par = list(
    start = 1,
    end = 12,
    interval = 1,
    aggregate.dur = 2,
    rule = "any"))


render.d3movie(nd,
  vertex.col = nodes$col,
  displaylabels = TRUE)

因为我的基于代理的模型非常小,边缘在第 12 天左右消失。基本上,到那时每个人都已经接触过病毒,因此进一步接触没有任何区别。我的模特不再关心。您在我的示例中看到的是静态节点颜色。我想看到的是随着疾病状态改变颜色的节点。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我只是在 networkDynamic 语句中添加了以下内容:

nd <-networkDynamic(edge.spells = edges,
                    vertex.spells = nodes,
                    create.TEAs = TRUE)

我试图指定 vertex.TEA.names = "col" 并且抛出了一些东西。忽略它解决了我的问题。

TEA 的事情非常令人困惑,在线教程可以为像我这样的麻木者更好地解释这一点。也就是说,它是免费软件,我感谢 sna/tsna/ndtv 的创建者的贡献。