作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
networkd3包包含一些非常好的函数,用于创建明显的网络。不同的函数有不同的参数,所以这个问题专门针对 radialNetwork() 函数。是否可以根据给定的向量改变节点笔划的颜色?
下面的代码创建了一个网络图,但将节点描边的参数更改为包含不同颜色的向量不起作用。
library(networkD3)
library(tidyverse)
library(data.tree)
## Data
input <- list(number=50)
Data_tree <- data.frame(Start="Class",
Asset = sample(c("FI","Equity","Currency","Commodities"),input$number,replace = TRUE),
Sub_Asset = sample(c("Asia","Europe","USA","Africa","ME"),input$number,replace = TRUE),
Ticker = replicate(input$number,paste0(sample(LETTERS,3),collapse=""))) %>%
unite(col="pathString",Start,Asset,Sub_Asset,Ticker,sep="-",remove=FALSE) %>%
select(-Start) %>% as.Node(pathDelimiter = "-")
radialNetwork(ToListExplicit(Data_tree, unname = TRUE ),
linkColour = "#ccc",
nodeColour = "#fff",
nodeStroke = "orange",
textColour = "#cccccc")
最佳答案
不直接... networkd3不支持该功能。但是,您可以将自己的 JavaScript 注入(inject)该属性。
例如,如果您有一个按正确顺序排列的颜色名称向量,您可以将其转换为 JavaScript 数组(格式为:["red", "blue", "green"])
并使用 htmlwidget
包中的 JS
函数构建一个函数来传递 nodeStroke 参数。
colorVector <- c("black", "red", "blue", "green", "orange",
rep("red", 5), rep("blue", 5), rep("green", 4), rep("orange", 4),
rep("red", 11), rep("blue", 14), rep("green", 14), rep("orange", 11))
jsarray <- paste0('["', paste(colorVector, collapse = '", "'), '"]')
nodeStrokeJS <- JS(paste0('function(d, i) { return ', jsarray, '[i]; }'))
radialNetwork(ToListExplicit(Data_tree, unname = TRUE ),
linkColour = "#ccc",
nodeColour = "#fff",
nodeStroke = nodeStrokeJS,
textColour = "#cccccc")
关于用于 radialNetwork() 的 R networkD3 颜色节点描边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42568997/
networkd3包包含一些非常好的函数,用于创建明显的网络。不同的函数有不同的参数,所以这个问题专门针对 radialNetwork() 函数。是否可以根据给定的向量改变节点笔划的颜色? 下面的代码
我是一名优秀的程序员,十分优秀!