【问题标题】:Link value label thousands separator链接值标签千位分隔符
【发布时间】:2019-04-08 16:09:58
【问题描述】:

我正在使用来自sankeyNetwork。当我绘制数据时,如果将鼠标悬停在 sankey 链接上,则会出现链接标签,并且此标签中的千位分隔符是逗号。我希望这是一个观点。

这是一个例子:

library(networkD3)

nodes <- data.frame(name = c('a','b'))
links <- data.frame(source = c(0), target = c(1), value = c(12000))

p <- sankeyNetwork(
  Links = links,
  Source = "source",
  Target = "target",
  Value = "value",
  Nodes = nodes,
  NodeID = "name",
  fontSize = 12,
  nodeWidth = 30,
  iterations = 0
)

p

谢谢!!

西维

【问题讨论】:

  • 它被硬编码到 JavaScript 中。您要么必须修改底层 JavaScript,要么以某种方式覆盖自定义格式函数 here
  • “你要么必须修改底层的 JavaScript”:我该怎么做?
  • Fork 仓库,将“,”更改为“.”,安装您修改后的软件包版本。

标签: networkd3 r sankey-diagram htmlwidgets networkd3


【解决方案1】:

您可以通过使用htmlwidgets::onRender 重写链接标题来实现这一点...

library(networkD3)
library(htmlwidgets)

nodes <- data.frame(name = c('a','b'))
links <- data.frame(source = c(0), target = c(1), value = c(12000))

p <- sankeyNetwork(
  Links = links,
  Source = "source",
  Target = "target",
  Value = "value",
  Nodes = nodes,
  NodeID = "name",
  fontSize = 12,
  nodeWidth = 30,
  iterations = 0
)

customJS <- '
function(el,x) { 
    var link = d3.selectAll(".link");

    var format = d3.formatLocale({"decimal": ",", "thousands": ".", "grouping": [3], "currency": ["", "\u00a0€"]}).format(",.0f");

    link.select("title").select("body")
        .html(function(d) { return "<pre>" + d.source.name + " \u2192 " + d.target.name +
            "\\n" + format(d.value) + "<pre>"; });
}
'
onRender(p, customJS)

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 2012-10-22
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多