首页 > 解决方案 > R - 对角网络中的 JS 数组

问题描述

我的问题是关于:

RadialNetwork()的R networkD3颜色节点笔划

每当我创建和使用颜色矢量(链接答案中给出的上下文)时,diagonalNetwork()节点颜色的分布都会不正确。

有没有办法知道如何diagonalNetwork()重新排列输入的数据?网络标签和结构是正确的。只有颜色不是。

标签: javascriptrhtmlwidgetsnetworkd3

解决方案


颜色按级别应用,然后按数据最初的顺序应用。在这个例子中,颜色是这样排序的,根是黑色,省份是红色,城市是蓝色。

library(networkD3)

CanadaPC <- list(name = "Canada", children = 
                   list(list(name = "Newfoundland",
                             children = list(list(name = "St. John's"))),
                        list(name = "PEI",
                             children = list(list(name = "Charlottetown"))),
                        list(name = "Nova Scotia",
                             children = list(list(name = "Halifax"))),
                        list(name = "New Brunswick",
                             children = list(list(name = "Fredericton"))),
                        list(name = "Quebec",
                             children = list(list(name = "Montreal"),
                                             list(name = "Quebec City"))),
                        list(name = "Ontario",
                             children = list(list(name = "Toronto"),
                                             list(name = "Ottawa"))),
                        list(name = "Manitoba",
                             children = list(list(name = "Winnipeg"))),
                        list(name = "Saskatchewan",
                             children = list(list(name = "Regina"))),
                        list(name = "Nunavuet",
                             children = list(list(name = "Iqaluit"))),
                        list(name = "NWT",
                             children = list(list(name = "Yellowknife"))),
                        list(name = "Alberta",
                             children = list(list(name = "Edmonton"))),
                        list(name = "British Columbia",
                             children = list(list(name = "Victoria"),
                                             list(name = "Vancouver"))),
                        list(name = "Yukon",
                             children = list(list(name = "Whitehorse")))
                   ))

colorVector <- c("black", rep("red", 13), rep("blue", 16))

jsarray <- paste0('["', paste(colorVector, collapse = '", "'), '"]')
nodeStrokeJS <- JS(paste0('function(d, i) { return ', jsarray, '[i]; }'))

diagonalNetwork(List = CanadaPC, nodeStroke = nodeStrokeJS)

在此处输入图像描述


推荐阅读