Я получаю неожиданные результаты при анимации сетей с помощью ndtv. Вершины масштабируются в соответствии со значением журнала, но по причинам, неясным для меня, вершины с небольшими значениями не отображаются. Добавление констант для установки минимального размера вершины не работает. Вот мой код:
# load requisite libaries
require(sna)
require(tsna)
require(ndtv)
require(networkDynamic)
require(lubridate)
# read in pre-processed data
nodelist <- read.csv("https://github.com/aterhorst/data/raw/master/nodelist.csv", header=T, stringsAsFactors = F)
edgelist <- read.csv("https://github.com/aterhorst/data/raw/master/edgelist.csv", header=T, stringsAsFactors = F)
nodelist_expanded <- read.csv("https://github.com/aterhorst/data/raw/master/nodelist_expanded.csv", header=T, stringsAsFactors = F)
# colour code nodes
nodelist$col <- ifelse(nodelist$portfolio == T, "red", "blue")
# shape nodes
nodelist$shape <- ifelse(nodelist$portfolio == T, 4, 12)
# convert dates to year
nodelist_expanded$onset <- year(nodelist_expanded$onset)
nodelist_expanded$terminus <- year(nodelist_expanded$terminus)
# aggregate budget data
nodelist_expanded$budget <- nodelist_expanded$appropriation + nodelist_expanded$ext_revenue
# scale budget
nodelist_expanded$log_budget <- log1p(nodelist_expanded$budget) / 10
# convert dates to year
edgelist$onset <- year(edgelist$onset)
edgelist$terminus <- year(edgelist$terminus)
# create basic network object
nw <- network(edgelist[,c(2,3)],
vertex.attr = nodelist[,c(1:5)],
vertex.attrnames = c("vertex.id", "agency", "portfolio", "col", "shape"),
directed = F)
# create dynamic network object
nd <-networkDynamic(nw,
edge.spells = edgelist[,c(4,5,3,2)],
vertex.spells = nodelist_expanded[,c(5,6,1,8)],
create.TEAs = TRUE,
vertex.TEA.names = "log_budget")
reconcile.vertex.activity(nd, mode = "match.to.edges")
# create animation
render.d3movie(nd,
displaylabels = FALSE,
vertex.col = "col",
vertex.sides = "shape",
vertex.rot = 45,
vertex.cex = "log_budget",
# This slice function makes the labels work
vertex.tooltip = function(slice) {paste("<b>Agency:</b>", (slice %v% "agency"))})
Это обеспечивает правильную анимацию, за исключением того, что некоторые ребра не имеют конечного узла / вершины. Эти недостающие вершины соответствуют учреждениям с очень маленькими бюджетами. Что я могу сделать, чтобы исправить это?