5

我正在尝试对使用R中的 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 知识,我不知道如何编写它,甚至不知道它是否可能。

4

1 回答 1

2

包添加自定义 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)
  )
)
于 2017-05-13T14:48:49.147 回答