r语言 - networkD3 forceNetwork:如何更改图例文本颜色,文本标签颜色,并将文本标签放在前面



我正在尝试对在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)
  )
)

相关内容

  • 没有找到相关文章

最新更新