0

我正在尝试创建一个网络动画,显示节点如何随时间改变状态。用例是 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 天左右消失。基本上,到那时每个人都已经接触过病毒,所以进一步的接触没有任何区别。我的模特不再关心了。您在我的示例中看到的是静态节点颜色。我想看到的是节点随着疾病状态而改变颜色。有人可以帮我解决这个问题吗?

4

1 回答 1

0

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

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

我试图指定vertex.TEA.names = "col"并扔东西。离开它解决了我的问题。

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

于 2021-03-25T23:18:35.920 回答