Изменение масштаба сетевых вершин в анимациях ndtv - PullRequest
0 голосов
/ 20 июня 2019

Я получаю неожиданные результаты при анимации сетей с помощью 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"))})

Это обеспечивает правильную анимацию, за исключением того, что некоторые ребра не имеют конечного узла / вершины. Эти недостающие вершины соответствуют учреждениям с очень маленькими бюджетами. Что я могу сделать, чтобы исправить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...