我正在尝试对在R中使用networkd3 forcenetwork
绘制的网络图进行一些调整。
特别是,我想将文本标签颜色更改为黑色(或白色,用于黑色背景),并将文本标签放在节点的前面。标准选项使得阅读文本标签变得非常困难,因为有些标签的颜色太浅,而另一些标签则被密集的节点簇所阻挡。
如果您也可以更改图例文本颜色,以便我可以灵活地更改背景颜色,那就太好了。
正如这篇文章中指出的那样,一种可能的解决方案是劫持一些未使用的参数。
forceNetwork(Links = MisLinks, Nodes = MisNodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8,
linkDistance =
JS('function(){d3.select("body").style("background-color", "#DAE3F9");return 50;}'))
但是,由于对JS一无所知,我不知道如何编写它,或者它是否可能。
您可以使用 htmltools 包添加自定义 CSS 来设置背景颜色、为图例文本着色以及为节点标签文本着色。更改文本标签的 z 顺序会复杂得多,因为您必须对 SVG 中的元素重新排序,我不确定这是否值得。
library(networkD3)
library(htmltools)
browsable(
tagList(
tags$head(
tags$style('
body{background-color: #DAE3F9 !important}
.nodetext{fill: #000000}
.legend text{fill: #FF0000}
')
),
forceNetwork(Links = MisLinks, Nodes = MisNodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacityNoHover = 1,
fontSize = 12, legend = T, zoom = T)
)
)